我有一个Scala / Java OpenGL应用程序,我在其中使用Akka框架。目前,我的OpenGL线程独立于actor系统,因此我可以保证对OpenGL函数的调用始终来自单个线程。这很重要,否则OpenGL会抱怨。
到现在为止,我不得不将OpenGL线程中的消息发送给系统中的actor,这非常有效。我现在面临着以相反的方式发送消息的需要,但当然我不能简单地将OpenGL放在一个actor中,因为这将破坏它从单个线程运行的要求。
另一种方法是手动使用队列和锁来进行actor和OpenGL线程之间的通信,但是我想知道是否有办法将OpenGL调用放在一个特殊的Actor中,这样可以得到保证由Akka在单个线程中运行。
此致
答案 0 :(得分:7)
您可以使用PinnedDispatcher
为每个角色使用单个帖子。根据文件:
这个调度程序为每个使用它的actor赋予一个唯一的线程; 即每个actor都有自己的线程池,只有一个线程 游泳池。