4

我有一个使用 Akka 框架的 Scala/Java OpenGL 应用程序。目前,我的 OpenGL 线程独立于 Actor 系统,因此我可以保证对 OpenGL 函数的调用始终来自单个线程。这很重要,否则 OpenGL 会报错。

到现在为止,我必须从 OpenGL 线程向系统中的参与者发送消息,这工作得很好。我现在需要以相反的方式发送消息,但当然我不能简单地将 OpenGL 放在一个 actor 中,因为这会打破它从单个线程运行的要求。

另一种方法是手动使用队列和锁来进行actor和OpenGL线程之间的通信,但我想知道是否有办法将OpenGL调用放在一个特殊的Actor中,Akka会保证在单个线程中运行。

问候

4

1 回答 1

7

您可以使用PinnedDispatcher. 根据文档:

这个调度器为每个使用它的actor指定一个唯一的线程;即每个参与者将有自己的线程池,池中只有一个线程。

于 2012-11-22T17:13:12.273 回答