реклама на сайте
подробности

 
 
> Семафоры и Мютексы
toweroff
сообщение Jun 9 2018, 16:52
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Товарищи, объясните разницу
Мютекс - запрещает доступ от разных процессов
Семафор - имеет счетчик вхождений
получается, мютекс - вырожденная форма семафора с количеством вхождений ==1?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Arlleex
сообщение Jun 9 2018, 17:13
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



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

Сообщение отредактировал Arlleex - Jun 9 2018, 17:14
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 10 2018, 14:27
Сообщение #3


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Arlleex @ Jun 9 2018, 20:13) *
Мьютекс - это объект синхронизации, имеющий состояния "захвачен" и "отпущен", причем отпустить мьютекс может только тот процесс, который его захватил, в отличие от семафоров. Не забывайте, что есть еще счетные семафоры, а также рекурсивные мьютексы. У них у обоих счетчик захватов/сигнализации увеличивается/уменьшается, только вот опять же, освободить мьютекс может только занявший его процесс. При обработке мьютекса ОС проверяет принадлежность объекта синхронизации к текущему процессу. В случае семафора - нет.

Но при этом можно сделать destroy мьютекса из другой задачи, не в той в которой он был залочен.
И он разлочится для всех остальных задач. Разница в поведении с семафорами здесь эфемерная.
Так что мьютексам найти достойное применение очень сложно. Я их никогда не использую.
Гораздо удобнее для этого Lightweight Semaphores. Они и быстрее мьютексов создаются, и лочат задачи в два раза быстрее.
Go to the top of the page
 
+Quote Post
Forger
сообщение Jun 10 2018, 16:04
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(AlexandrY @ Jun 10 2018, 17:27) *
Но при этом можно сделать destroy мьютекса из другой задачи, не в той в которой он был залочен.

Достаю свою "шарманку": если не делать мьютекс глобальным (доступным со "всех щелей"), то такая проблема ему не грозит. Впрочем, как и любому другому "объекту" wink.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 11 2018, 05:45
Сообщение #5


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Forger @ Jun 10 2018, 19:04) *
Достаю свою "шарманку": если не делать мьютекс глобальным (доступным со "всех щелей"), то такая проблема ему не грозит. Впрочем, как и любому другому "объекту" wink.gif

Это не проблема, а такая фича, которой надо пользоваться раз она есть.
Поэтому все что можно надо делать глобальным, иначе лишаетесь кучи полезных фичей. laughing.gif

Цитата(Viktuar @ Jun 10 2018, 18:13) *
А как же "priority inheritance" в мьютексах? Его вы тоже не используете?

Да не использую.
А вы используете? Расскажите как.
Go to the top of the page
 
+Quote Post
Forger
сообщение Jun 11 2018, 05:51
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(AlexandrY @ Jun 11 2018, 08:43) *
все что можно надо делать глобальным, иначе лишаетесь кучи полезных фичей

Вы аккуратнее шутите! Все-таки, это - раздел для новичков, и некоторые из них могут воспринять "это" всерьез!







--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 11 2018, 06:02
Сообщение #7


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Forger @ Jun 11 2018, 08:51) *
Вы аккуратнее шутите! Все-таки, это - раздел для новичков, и некоторые из них могут воспринять "это" всерьез!

Дело в том что программирование малых embedded систем - это несколько иная наука чем программирование скажем PC или даже одноплатных компьютеров.
Но это открывается только через достаточно лет практики.
Поэтому я не удивляюсь незнанию вами таких очевидных истин. wink.gif
Go to the top of the page
 
+Quote Post
Forger
сообщение Jun 11 2018, 06:16
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(AlexandrY @ Jun 11 2018, 09:02) *
Дело в том что программирование малых embedded систем - это несколько иная наука чем программирование скажем PC или даже одноплатных компьютеров.

Так говорили лет 15..20 назад, когда еще делили программистов на два лагеря: PC и PIC-контроллеры ...
К счастью, на дворе совсем другие времена, та "грань" практически размыта и поэтому очередная попытка подобного деления звучит уже как минимум наивно wink.gif
Не отставайте, а то затопчут :D

1. Глобальные переменные в большинстве случаев нарушают инкапсуляцию. К ним открыт неконтролируемый доступ отовсюду.
2. В большом проекте при обилии глобальных переменных возникает путаница в именах. Глобальную переменную же видно отовсюду, надо, чтобы отовсюду было понятно, зачем она.
3. Глобальные переменные в большинстве случаев нарушают принцип инверсии зависимостей (или делают возможным его нарушение).
4. Глобальные переменные ухудшают масштабируемость проекта.
5. Глобальные переменные ухудшают читаемость кода (в каком-то конкретно взятом месте непонятно, нужна ли какая-то конкретная глобальная переменная, или нет).
6. Глобальные переменные приводят к трудноуловимым ошибкам. Примеры: нежелательное изменение её значения в другом месте/другим потоком, ошибочное использование глобальной переменной для промежуточных вычислений из-за совпадения имен, возвращение функцией неправильного значения при тех же параметрах (оказывается, она зависима от глобальной переменной, а ее кто-то поменял).
7. Глобальные переменные создают большие сложности при использовании модульного тестирования.
8. Глобальные переменные увеличивают число прямых и косвенных связей в системе, делая её поведение труднопредсказуемым, а её саму - сложной для понимания и развития.


Взято отсюда.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- toweroff   Семафоры и Мютексы   Jun 9 2018, 16:52
- - Serge V Iz   Цитата(toweroff @ Jun 9 2018, 17:52) мюте...   Jun 9 2018, 17:07
|- - Viktuar   Цитата(AlexandrY @ Jun 10 2018, 15:27) Но...   Jun 10 2018, 15:13
|- - Viktuar   Цитата(AlexandrY @ Jun 11 2018, 05:45) Да...   Jun 11 2018, 13:54
|- - AlexandrY   Цитата(Viktuar @ Jun 11 2018, 16:54) Испо...   Jun 11 2018, 19:16
|- - Forger   Цитата(AlexandrY @ Jun 11 2018, 22:16) Ст...   Jun 11 2018, 19:33
|- - AlexandrY   Цитата(Forger @ Jun 11 2018, 22:33) ТС ни...   Jun 11 2018, 20:07
|- - Forger   Цитата(AlexandrY @ Jun 11 2018, 23:07) Ес...   Jun 11 2018, 20:16
- - Forger   Цитата(toweroff @ Jun 9 2018, 19:52) Това...   Jun 9 2018, 20:04
|- - ViKo   Цитата(Forger @ Jun 9 2018, 23:04) Вот по...   Jun 10 2018, 10:38
|- - Forger   Цитата(ViKo @ Jun 10 2018, 13:38) По како...   Jun 10 2018, 11:48
|- - k155la3   Цитата(Forger @ Jun 10 2018, 14:48) По лю...   Jun 11 2018, 08:04
|- - Forger   Цитата(k155la3 @ Jun 11 2018, 11:04) ...   Jun 11 2018, 09:25
|- - Herz   Цитата(Forger @ Jun 11 2018, 12:25) Если ...   Jun 11 2018, 14:51
|- - Forger   Цитата(Herz @ Jun 11 2018, 17:51) Здесь р...   Jun 11 2018, 15:47
- - haker_fox   QUOTE (toweroff @ Jun 10 2018, 00:52) Тов...   Jun 10 2018, 10:47
|- - jcxz   Цитата(haker_fox @ Jun 10 2018, 13:47) Се...   Jun 10 2018, 11:17
|- - haker_fox   QUOTE (jcxz @ Jun 10 2018, 19:17) Не знаю...   Jun 10 2018, 12:43
- - ViKo   ЦитатаMutex stands for “Mutual Exclusion”. In real...   Jun 11 2018, 08:50
- - Serge V Iz   А очереди не должны приводить к лишним переключени...   Jun 11 2018, 14:33
- - Herz   Я согласен, многое можно выяснить самостоятельно. ...   Jun 11 2018, 18:13
|- - Forger   Цитата(Herz @ Jun 11 2018, 21:13) Как Вы ...   Jun 11 2018, 18:25
|- - Herz   Цитата(Forger @ Jun 11 2018, 21:25) А вот...   Jun 12 2018, 11:34
- - toweroff   ТС не молчит, праздники... спасибо за обсуждение, ...   Jun 12 2018, 05:39
- - Forger   Цитата(toweroff @ Jun 12 2018, 08:39) в р...   Jun 12 2018, 06:36


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 23:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.0146 секунд с 7
ELECTRONIX ©2004-2016