我使用基於while(true)
和阻塞函數的三個線程創建應用程序模型。C++中的自定義阻止函數
- 事件線程 - 等待用戶輸入,阻止SDL_WaitEvent
- 停飛螺紋 - 等待來自服務器的數據,已被阻塞插座。
- 渲染線程 - 呈現緩衝區中的數據,但未被阻止。
我有一個渲染線程的問題 - 我需要一個阻塞函數,例如,將阻塞,直到某些paint事件(由我定義並在其他兩個線程之一中調度)發生。
但我不知道如何阻止功能的工作。當然,我可以創建一個sleep()
循環,但是這樣的循環具有固定的FPS,即使沒有任何事情發生(我已經詳細闡述了該主題here)。在另一方面,它不會立即顯示數據。這對於GUI應用程序並不好。
WaitForMultipleObject有什麼用?它不是你在找什麼? – duDE
看起來不錯。是否有多平臺版本?或者至少,相當於linux,所以我可以自己寫一個? –
'WaitForMultipleObject'是一個黑客,因爲Windows沒有條件變量。當您在等待外部事件(如傳入數據)時非常好,但它不是專爲內部同步而設計的;競爭條件太容易了。 –