我想製作一個簡單的GUI API。從本質上講,它的工作方式是gui widget基本上是一個無限循環中的線程。線程有一個指向小部件類的指針。我希望它的工作方式與WinAPI基本相似。我會這樣做:多線程問題
textbox->SendMessage("Click",args);
然後將其添加到其隊列進行處理。最終,這將調用一個尖銳的函數,這將是點擊事件處理程序。我希望能夠做的另一件事是安全地獲取和設置類中的東西,而不必擔心工作線程是否正在使用它。例如,如果我在工作人員離職時發送消息(這會增加隊列),這可能會造成麻煩。我正在使用boost :: thread。我應該爲我的情況做些什麼?
感謝
那麼它會適合簡單地有1線程爲我所有的小部件?我正在爲我的遊戲製作這個遊戲,如果讓gui和遊戲渲染在同一個線程上,會更好嗎? – jmasterx 2010-09-30 22:23:56
這個遊戲有多大?這是一個獨立的項目嗎?如果這是一個單獨的遊戲,請專注於使遊戲不是引擎。在一個線程上做所有事情,並專注於制定明確,明確的邊界,以便稍後優化渲染。許多小型團隊(或獨奏)遊戲開發者在努力創造大型引擎基礎設施而不是真正的遊戲時失敗了。如果這是爲了一個更大的項目,或者*純粹是爲了一個API /引擎;使用單獨的線程,渲染到屏幕外的表面,並在呈現線程被標記爲髒時從渲染線程拉出。 – 2010-09-30 22:29:40
關鍵在於:將GUI保留在單個線程上(最好與遊戲處理相同),以便您可以擔心實際編寫小部件而不是調試競態條件。 – 2010-09-30 22:31:14