3
說,如果我創建了以下這樣一個事件:如何用C++獲取自動重置事件的狀態?
HANDLE hGlobalEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL);
是否有可能通過控制柄到其狀態W/O改變呢?
說,如果我創建了以下這樣一個事件:如何用C++獲取自動重置事件的狀態?
HANDLE hGlobalEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL);
是否有可能通過控制柄到其狀態W/O改變呢?
不,沒有任何直接的方法來做到這一點。即使有一種查詢事件對象的方法,答案可能隨時發生變化,使信息立即過時。
哦,我明白了。比賽條件,哈? – c00000fd
「不,沒有任何直接的方法可以做到這一點。」 - 實際上有一種方法。你可以使用'WaitForSingleObject(hGlobalEvent,0)'。但是,是的,如果事件的狀態被另一個線程改變,那麼在獲得結果的時間與結果的執行時間之間將存在爭用條件。 –
@RemyLebeau:但在自動重置事件中使用'WaitForSingleObject()'會將狀態從Set更改爲Reset。 –