我有一個線程,試圖使用定時接收函數從消息隊列中讀取東西。該線程還具有一個互斥鎖,它用作指示它何時需要退出(例如,應用程序已關閉)的指示器:最初互斥鎖被鎖定,並且當它被解鎖(在其他地方)時,線程需要停止。解鎖從定時接收互斥解鎖
我想以這樣一種方式進行定時接收,即在解鎖互斥鎖時它也會解除阻塞。所以當我們被要求停止時,我們立即做到這一點,而不必等待定時接收超時。
在Windows中,我可以通過重疊IO和WaitForMultipleObjects()來實現。對命名管道的重疊讀取會返回一個對象,然後同時等待該對象和互斥鎖。
有沒有辦法在POSIX中做到這一點?
你不能只是發佈一些消息到隊列來喚醒線程,所以讓它注意到一些'終止'布爾?在非平凡的操作系統上,如果線程在應用程序終止前不需要關閉,那麼你不應該明確地終止它,除非有一個壓倒性的要求。 –
@MartinJames是的,實際上可以工作。 –
C不是C++不是C!選擇一種語言。 – Olaf