2010-11-01 47 views
1

如果我有一個mainthread建立一個GLUT窗口,然後創建一個工作線程來做計算,並在計算工作線程中的一些事件期間我想更新我的GLUT窗口。我怎樣才能做到這一點? 顯然我不能直接從工作線程調用glut函數。GLUT和多線程

我設置了一些在update Idle Loop中檢查過的'updateflag',如果它被設置,然後重繪GLUT窗口,但是顯然它無法從空閒循環中調用glut函數(或者最不應該做)。

那麼 - 什麼是正確的方法來做到這一點?

謝謝!

+0

唯一合理的答案是「不要(甚至試圖)」。谷歌基本上被設計成足夠的框架來允許書中的例子起作用,但沒有更多。你真的需要更強大的東西。 – 2010-11-01 18:03:30

回答

0

這是大多數GUI框架的常見問題(大部分通常不是線程安全的)。

正常的解決方案是向主事件循環發佈調用。我不確定你使用的是什麼線程庫(有些可能會有委託的概念等),但在你的情況下,一個簡單的事件隊列可能會做到這一點。

是的,你可以重新從空閒功能的窗口。至少我一直這樣做......