Взаимоисключающая блокировка: что означает “блокирование”?

Я читал на многопоточности и доступе совместно используемых ресурсов и одном из многих (для меня), новые понятия являются взаимоисключающей блокировкой. То, что я, может казаться, не узнаю, - то, что на самом деле происходит с потоком, который находит, что "критический раздел" заблокирован. Это говорит во многих местах, что поток "заблокирован", но что это означает? Это приостановлено, и это возобновит, когда блокировка будет снята? Или это попробует еще раз в следующем повторении "выполненного цикла"?

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

17
задан zmippie 20 October 2010 в 21:33
поделиться