Подтвердить что ты не робот

Монитор против Mutex

Я прочитал, что мьютекс - это семафор со значением 1 (двоичный семафор), который используется для принудительного взаимного исключения.

Я прочитал эту ссылку Семафор против мониторов - какая разница? в котором говорится, что монитор помогает в достижении взаимного исключения.

Может ли кто-нибудь сказать мне разницу между мьютексом и монитором, поскольку оба они делают то же самое?

4b9b3361

Ответ 1

Поскольку вы не указали, какую ОС или язык/библиотеку вы говорите, позвольте мне ответить в общем виде.

Концептуально они одинаковы. Но обычно они реализованы несколько иначе

Monitor

Обычно реализация мониторов более быстрая/легкая, так как она предназначена для многопоточной синхронизации в рамках одного и того же процесса. Также, как правило, он предоставляется самой каркасной/библиотекой (в отличие от запроса ОС).

мьютекса

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

Ответ 2

Мониторы отличаются от Mutex, но их можно считать похожими в том смысле, что Monitor строятся поверх Mutex. Для большей ясности смотрите изображение монитора в изображении внизу.

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

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

введите описание изображения здесь

Я хочу, вы можете увидеть мой ответ здесь, который может или не может иметь отношение к этому вопросу.

Здесь вы можете найти другое актуальное обсуждение.

Семафор против мониторов - в чем разница?