Использование ключевого слова C # lock

Я публикую свое понимание блокировки 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, но НЕ к обоим.

Это правильно?

8
задан drudge 27 May 2011 в 23:16
поделиться