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