Я публикую свое понимание блокировки C # следующим образом, пожалуйста, помогите мне проверить, правильно ли я понял.
public class TestLock
{
private object threadLock = new object();
...
public void PrintOne()
{
lock (threadLock)
{
// SectionOne
}
}
public void PrintTwo()
{
lock (threadLock)
{
// SectionTwo
}
}
...
}
Случай I> Thread1 и Thread2 одновременно пытаются вызвать PrintOne . Поскольку PrintOne охраняется блокировкой экземпляра, в любое время только один поток может исключительно войти в SectionOne.
Это правильно?
Случай II> Thread1 и Thread2 одновременно пытаются вызвать PrintOne и PrintTwo соответственно (т.е. Thread1 вызывает PrintOne, а Thread2 вызывает PrintTwo) Поскольку два метода печати охраняются одной и той же блокировкой экземпляра в любое время, только один поток может получить эксклюзивный доступ к SectionOne или SectionTwo, но НЕ к обоим.
Это правильно?