Различие между монитором и блокировкой?

Это случилось со мной, когда у меня было две копии одной и той же библиотеки (у меня было две разные версии библиотеки поддержки Android версии 4). Однажды я удалил один из них - проект скомпилирован, и я смог его запустить. Dan

11
задан Yves M. 7 January 2015 в 10:29
поделиться

5 ответов

Например, в C #. В более поздних версиях .NET framework это было изменено на:

bool lockTaken = false;
try
{
    Monitor.Enter(object, ref lockTaken);
    // Your code here...
}
finally
{
    if (lockTaken)
    {
        Monitor.Exit(object);
    }
}
14
ответ дан 3 December 2019 в 07:14
поделиться

Они связаны. Например, в C # оператор lock представляет собой простую оболочку try-finally вокруг входа в Monitor и выхода из , когда это сделано.

4
ответ дан 3 December 2019 в 07:14
поделиться

Мониторы - это "полуавтоматические" блокировки с помощью компилятора. Они позволяют объявлять синхронизированные методы для классов и т. Д. Это просто другой подход к обеспечению взаимного исключения. Я нашел , что эта книга является наиболее полным объяснением концепций,

1
ответ дан 3 December 2019 в 07:14
поделиться

Блокировка обеспечивает взаимное исключение.

Монитор связывает данные, которые должны быть защищены, и примитивы взаимного исключения и синхронизации, необходимые для защиты доступа к данным.
Синхронизация используется, например, когда вам нужно, чтобы один поток ждал, пока не произойдет событие (например, дождитесь, пока другой поток не поместит элемент в очередь).

0
ответ дан 3 December 2019 в 07:14
поделиться

Мониторы - это конструкция языка программирования, которая делает то же самое, что и полуфоры / блокировки, но мониторы управляют общими данными путем синхронизации во время выполнения. В отличие от этого, блокировки защищают общие данные просто "вращением", которое может привести к плохой загрузке ЦП.

0
ответ дан 3 December 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: