Если у меня есть что-то вроде этого:
private readonly object objectLock = new object();
public void MethodA()
{
lock(objectLock)
{
//do something
}
}
public void MethodB()
{
lock(objectLock)
{
//do something
}
}
Если у меня есть 2 потока и оба приходят одновременно, первый поток вызывает MethodA, а второй Method B. Тот, который приходит первым и блокирует objectLock, я предполагаю, что другой поток сидит и ждет, пока objectLock больше не будет заблокирован.