2012-11-22 14 views
4

我有一個使用Akka框架的Scala/Java OpenGL應用程序。目前,我的OpenGL線程與actor系統是獨立的,所以我可以保證對OpenGL函數的調用總是來自單個線程。這很重要,否則OpenGL會抱怨。使用OpenGL與Akka Actor:保證單個線程用於特定角色

到現在爲止,我不得不從OpenGL線程發送消息給系統中的角色,並且這種方式非常有效。我現在面臨着需要以相反方式發送消息,但是我當然不能簡單地將OpenGL放在一個actor中,因爲這會打破它從一個線程運行的要求。

另一種方法是手動使用隊列和鎖定來執行者與OpenGL線程之間的通信,但是我想知道是否有辦法將OpenGL調用放置在特殊的Actor中,由Akka保證在單線程中運行。

問候

+1

你可以看到[這是如何爲Swing做(https://gist.github.com/2941554)(這需要在事件分派線程渲染的所有工作發生) –

回答

7

您可以使用使用PinnedDispatcher每個演員一個單獨的線程。根據文檔:

該調度程序爲每個使用它的actor使用一個唯一的線程; 即,每個演員將擁有自己的線程池,池中只有一個線程在 。

+0

是否保證這個特殊的演員贏得不會在任何其他線程上運行,或者該線程不會被其他任何演員使用?它可能看起來像一個細節,但在某些情況下它可能很重要... – nietaki

+0

根據文檔:是 – paradigmatic

相關問題