Wednesday, November 21, 2007

Tip of the day: Interlocked

The Interlocked class in .net is a static class that provides type operation that are performed atomically.

By providing this, it can help solve simple multithreading scenarios since:

1) It removes the chance of deadlocks that can be caused by using the lock keyword.

2) It has better performance than the lock keyword.

3) Simpler (and less) syntax.

Lets take a look at a scenario where you would like to count how many times a method is called while a program runs (multithreaded environment):

private static int methodCallsCounter = 0;
...

public void SomeMethod()
{
System.Threading.Interlocked.
Increment(ref methodCallsCounter);
...
}

The Interlocked class has a set of methods to manipulate data. A complete documentation and a full example can be found here.


Talking about multithreading and locks, I suggest reading this. It describes very important points about locking.

No comments: