Показать сообщение отдельно
Старый 27.11.2012, 23:30   #423
AVL
Разработчик
 
Регистрация: 27.01.2011
Адрес: Афипский
Сообщений: 419
Написано 100 полезных сообщений
(для 182 пользователей)
Ответ: Перлы сообщества Boolean

Сообщение от impersonalis Посмотреть сообщение
Да и, по большому счёту, если использовать не ж/д-терминологию, то удачнее употребить было бы "мьютекс" или "критическая секция". Т.к. семафор это более для общественных туалетов (на несколько "посадочных мест"). Последнее (крит.сек.) особенно актуально, учитывая что мы жили в номерах по двое, а значит алгоритм работы примитива (если б таковой был) сводился бы к: подёргай ручку и узнаешь. Это взаимодействие ориентированно на быструю скорость работы из-за отсутствия необходимости перехода в режим ядра (использование interlocked-функций, реализующих атомарное взаимодействие с флагами контроля), оправдано при малой вероятности коллизии (всего два человека!). В то время, как например в вагонах поездов (постоянно занято!) сейчас устанавливают световую сигнализацию (замыкаемую замком туалета) - это уже мьютекс: процесс, пытающийся захватить сортир не дёргает ручку (каждый вновь подошедший!), а переключается на визуальный контроль индикатора. Причём, все стоящие в очереди узнают об изменении состояния туалета одновременно (со скоростью света). Далее, первый стоящий в очереди должен пойти в туалет. Хотя на практике это не всегда так (например, приоритеты: "пустите меня - а то прям здесь облегчусь!!111")
Кроме того, в гостинице можно подходить к запертой двери каждые x минут и дёргать ручку и ныть "ну скоро ты там?" - это уже спинблокировка (InitalizeCriticalSectionAndSpinCount). По прошествии некоторого времени просящий засыпает, переходя из пользовательского режима. Опять-таки, можно дёрнуть ручку, и в случае неудачи - начать выполнять иную деятельность (TryEnterCriticalSection), в то время как в вагоне для этого надо переключить взгляд на индикатор и подождать 0 мсек (WaitForSingleObject с нулевым ожиданием).
Аналогии, разумеется, притянуты за уши.
Где ж ты был год назад, когда я к экзамену по операционным системам готовился? Я тогда на мьютексах завалился
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (28.11.2012)