Как передать блокировки между потоками?
Вы вводите монитор в исходную ветку, скажем, в альфа-нить. Любые другие потоки, которые пытаются войти в монитор, будут блокироваться, пока монитор не будет доступен.
Если вы затем хотите перенести блокировку в другой поток, скажем, поток Bravo, при этом все еще имея возможность возобновить поток Alpha с владельцем монитора после завершения Bravo, вы помещаете Alpha в wait состояние на мониторе. Если нить Браво заблокирована на мониторе, то она просыпается и вводит монитор. Когда это сделано, он пульсирует монитор, который отказывается от владения Браво монитором и передает право собственности обратно в Alpha, которая просыпается и продолжает работать с владельцем монитора.
Если вам это совершенно не понятно, то (1) вам не следует пытаться делать это в первую очередь; это очень опасно, если вы ошиблись, и (2) вы должны прочитать это:
http://www.codeproject.com/Articles/28785/Thread-synchronization-Wait-and-Pulse-demystified