Figure 2: Volatile reads and writes are not guaranteed to be sequentially consistent in .NET. The compiler or hardware may reorder the events on the left so that they occur in the order on the right. In sequential consistency, it would be impossible (on the left side) for both reads to precede both writes.