ловля блох с максимальной дотошностью и формализмом Внезапно оказалось, что я не вполне понимаю спецификацию автоматического Event в Windows.
Вот что в ней написано:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682655(v=vs.85).aspxAuto-reset event
An event object whose state remains signaled until a single waiting thread is released, at which time the system automatically sets the state to nonsignaled.
If no threads are waiting, the event object's state remains signaled. If more than one thread is waiting, a waiting thread is selected. Do not assume a first-in, first-out (FIFO) order. External events such as kernel-mode APCs can change the wait order.
Из этого описания мне несколько непонятно, можно ли просигналить Event, а ЗАТЕМ тем же тредом дождаться этого Event-a, если одновременно в наличии другие треды, уже ждущие данный Event?
Если же кто-то процитирует "a waiting thread is selected" как свидетельство того, что выбирается всё же один из уже ждущих тредов, я спрошу иначе:
если есть несколько ждущих тредов и два треда одновременно вызывают SetEvent, есть ли гарантия, что разблокируются два ждущих треда, или такой гарантии всё же нет и один из SetEvent может потеряться?