Monitors and the lock Keyword

One fundamental synchronization primitive is the concept of a monitor, as exposed through the Monitor class in System.Threading. In most cases, the use of a monitor is hidden because of the use of the lock keyword in C#, which leverages this primitive under the covers.

For our running example of a shared counter, we can make the following changes to prevent the two threads from updating the state simultaneously:

image

No matter how many times you run this code, the outcome should always be zero (as we expected in the first place). The way this works is by the monitor’s guarantee that no two threads can be operating under ...

Get C# 4.0 Unleashed now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.