April 2013
Intermediate to advanced
1700 pages
92h 51m
English
You might, and actually should, wonder where this nondeterminism comes from. To understand this, we need to delve a little deeper. The crux of the problem lies in the fact Increment and Decrement are not atomic operations:
public void Increment(){ _value++;}
The use of the postincrement expression (used as a statement here) really decomposes in three distinct operations that are carried out sequentially: First the value is read, then it gets incremented, and finally it gets assigned back to the field. Figure 8.24 shows the IL code corresponding to a post-increment expression.
FIGURE 8.24 Nonatomic postincrement on a field.
Read now
Unlock full access