1
我有一個程序(用C語言編寫,目前運行在Mac OS X 10.8.4上)模擬世界並每秒更新世界狀態多次。GTK + 3多線程
在啓動時,該程序創建一個後臺線程,創建一個簡單的GTK窗口並調用gtk_main
。
在每次更新世界狀態(在主線程中)之後,我希望窗口反映出這種變化。我的第一個方法是在更新世界之後簡單地更新GTK小部件,但因爲這是一個不同的線程,所以事情非常混亂。
是否有某種機制,主線程可以更新圖形線程上的某些狀態,然後排隊提示圖形線程重繪的事件?即
void draw() {
// This can only be called from the graphics thread.
gtk_label_set(GTK_LABEL(label1), "some state");
}
// This causes draw() to be called on the graphics thread.
gtk_please_redraw_this_thing_on_the_graphics_thread();
有沒有辦法做到這一點?或者任何涵蓋它的教程?
鈣不是使用[GCD](http://developer.apple.com/library/ios/#documentation/Performance/Reference/GCD_libdispatch_Ref/Reference/reference.html):'dispatch_async(dispatch_get_main_queue(),...) '? –
我試圖使它儘可能便攜,所以不希望依賴於Mac OS X功能。 – DanielGibbs