|
Семафоры и Мютексы |
|
|
|
 |
Ответов
|
Jun 9 2018, 17:13
|

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

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

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

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

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

|
Цитата(AlexandrY @ Jun 11 2018, 09:02)  Дело в том что программирование малых embedded систем - это несколько иная наука чем программирование скажем PC или даже одноплатных компьютеров. Так говорили лет 15..20 назад, когда еще делили программистов на два лагеря: PC и PIC-контроллеры ... К счастью, на дворе совсем другие времена, та "грань" практически размыта и поэтому очередная попытка подобного деления звучит уже как минимум наивно  Не отставайте, а то затопчут :D 1. Глобальные переменные в большинстве случаев нарушают инкапсуляцию. К ним открыт неконтролируемый доступ отовсюду. 2. В большом проекте при обилии глобальных переменных возникает путаница в именах. Глобальную переменную же видно отовсюду, надо, чтобы отовсюду было понятно, зачем она. 3. Глобальные переменные в большинстве случаев нарушают принцип инверсии зависимостей (или делают возможным его нарушение). 4. Глобальные переменные ухудшают масштабируемость проекта. 5. Глобальные переменные ухудшают читаемость кода (в каком-то конкретно взятом месте непонятно, нужна ли какая-то конкретная глобальная переменная, или нет). 6. Глобальные переменные приводят к трудноуловимым ошибкам. Примеры: нежелательное изменение её значения в другом месте/другим потоком, ошибочное использование глобальной переменной для промежуточных вычислений из-за совпадения имен, возвращение функцией неправильного значения при тех же параметрах (оказывается, она зависима от глобальной переменной, а ее кто-то поменял). 7. Глобальные переменные создают большие сложности при использовании модульного тестирования. 8. Глобальные переменные увеличивают число прямых и косвенных связей в системе, делая её поведение труднопредсказуемым, а её саму - сложной для понимания и развития.Взято отсюда.
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
Сообщений в этой теме
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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|