Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Чем отличается мьютекс от двоичного семафора?

4.2K
02 ноября 2003 года
UnseriousSam
15 / / 26.10.2003
Чем отличается мьютекс от двоичного семафора?
2
04 ноября 2003 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by UnseriousSam
Чем отличается мьютекс от двоичного семафора?



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

4.2K
05 ноября 2003 года
UnseriousSam
15 / / 26.10.2003
[QUOTE]Originally posted by squirL


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

Я не имел ввиду конкретно Windows. Имел ввиду классические определения мьютекса и семафора.
Вобще двоичный семафор - это переменная, которая может принимать значения 0 или 1. Мьютекс - это переменная, которая может принимать значения 0 или 1. Это конечно все условно...блокирован, не блокирован. Тогда получается, что это одинаковые вещи. Если мы мьютекс будем использовать для синхронизации двух потоков - это уже получится двоичный семафор. Если мы двоичный семафор будем использовать для совместного использования некоторых данных - это уже будет мьютекс. Получается, различия только в реализации.
2
06 ноября 2003 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by UnseriousSam
[QUOTE]Originally posted by squirL


Я не имел ввиду конкретно Windows. Имел ввиду классические определения мьютекса и семафора.
Вобще двоичный семафор - это переменная, которая может принимать значения 0 или 1. Мьютекс - это переменная, которая может принимать значения 0 или 1. Это конечно все условно...блокирован, не блокирован. Тогда получается, что это одинаковые вещи. Если мы мьютекс будем использовать для синхронизации двух потоков - это уже получится двоичный семафор. Если мы двоичный семафор будем использовать для совместного использования некоторых данных - это уже будет мьютекс. Получается, различия только в реализации.



если брать общий случай, то если честно, я не встречался с классическими определениями мьютекса.
есть понятие блокирующих переменных и понятие семафора (т.е. это не одно и тоже), введенное Дейкстрой, которое в общем случае выглядит так:
Существуют два примитива.
В абстрактной форме эти примитивы, обозначаемые к примеру INC и DEC, оперируют над целыми неотрицательными переменными, называемыми семафорами. Пусть S такой семафор. Операции определяются следующим образом:
INC(S) : переменная S увеличивается на 1 одним неделимым действием; выборка, инкремент и запоминание не могут быть прерваны, и к S нет доступа другим процессам во время выполнения этой операции.
DEC(S) : уменьшение S на 1, если это возможно. Если S=0, то есть невозможно уменьшить S и остаться в области целых неотрицательных значений. тогда процесс, вызывающий DEC-операцию, ждет, пока это уменьшение станет возможным. Успешная проверка и уменьшение также является неделимой операцией.
я так подозреваю, что мьютекс в классическом смысле - частный вид семафора. или двоичный семафор, как вы его называете.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог