Suppose I have this method:
void Foo(int bar)
{
// do stuff
}
Here is the behavior I want Foo to have:
If thread 1 calls
Foo(1)and thread 2 callsFoo(2), both threads can run concurrently.If thread 1 calls
Foo(1)and thread 2 callsFoo(1), both threads cannot run concurrently.
Is there a good, standard way in .net to specify this type of behavior? I have a solution that uses a dictionary of objects to lock on, but that feels kind of messy.