我正在使用wxwidgets與boost :: thread一起。線程是工作線程,它發送一些事件到GUI:崩潰與提升::線程
線程創建:
thrd = boost::thread(boost::bind(workerFunction,this));
發送消息到GUI:
wxPostEvent(loWindow, event);
wxSafeYield();
在Windows下我看不出任何問題,但在Linux(Ubuntu 8.10)下啓動應用程序時,會停止並顯示以下錯誤消息:
_XCBUnlockDisplay: Assertion `xcb_get_request_sent(dpy->xcb->connection) == dpy->request' failed.
Aborted
我錯過了什麼?當workerFunction沒有在一個線程中啓動時,它沒有問題。
問候, /mspoerr
感謝您的回答,但wxWidgets文檔中提到: 「在窗口系統中產生對待處理消息的控制,例如,當一個耗時的過程寫入文本時沒有偶然的良率,文本窗口將不會被正確更新,並且在具有協作式多任務處理的系統上,比如Windows 3.1其他進程不會響應。「 在我看來,這是我需要的。當我不使用這個功能時,Windows應用程序也崩潰了。 /mspoerr – mspoerr 2009-06-28 20:58:39
您引用的文檔正在討論單線程應用程序。如果您想要在後臺線程中運行,請使用像Sleep(0)(在windows.h中定義)或升級平衡的操作系統函數。 – 2009-06-28 21:18:27