Показать сообщение отдельно
Старый 14.10.2012, 20:45   #421
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Перлы сообщества Boolean

Да и, по большому счёту, если использовать не ж/д-терминологию, то удачнее употребить было бы "мьютекс" или "критическая секция". Т.к. семафор это более для общественных туалетов (на несколько "посадочных мест"). Последнее (крит.сек.) особенно актуально, учитывая что мы жили в номерах по двое, а значит алгоритм работы примитива (если б таковой был) сводился бы к: подёргай ручку и узнаешь. Это взаимодействие ориентированно на быструю скорость работы из-за отсутствия необходимости перехода в режим ядра (использование interlocked-функций, реализующих атомарное взаимодействие с флагами контроля), оправдано при малой вероятности коллизии (всего два человека!). В то время, как например в вагонах поездов (постоянно занято!) сейчас устанавливают световую сигнализацию (замыкаемую замком туалета) - это уже мьютекс: процесс, пытающийся захватить сортир не дёргает ручку (каждый вновь подошедший!), а переключается на визуальный контроль индикатора. Причём, все стоящие в очереди узнают об изменении состояния туалета одновременно (со скоростью света). Далее, первый стоящий в очереди должен пойти в туалет. Хотя на практике это не всегда так (например, приоритеты: "пустите меня - а то прям здесь облегчусь!!111")
Кроме того, в гостинице можно подходить к запертой двери каждые x минут и дёргать ручку и ныть "ну скоро ты там?" - это уже спинблокировка (InitalizeCriticalSectionAndSpinCount). По прошествии некоторого времени просящий засыпает, переходя из пользовательского режима. Опять-таки, можно дёрнуть ручку, и в случае неудачи - начать выполнять иную деятельность (TryEnterCriticalSection), в то время как в вагоне для этого надо переключить взгляд на индикатор и подождать 0 мсек (WaitForSingleObject с нулевым ожиданием).
Аналогии, разумеется, притянуты за уши.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
AVL (27.11.2012), Dzirt (14.10.2012), Harter (17.10.2012), Mr_F_ (14.10.2012), pax (15.10.2012)