将OpenGL与Akka Actors一起使用:保证单个线程用于特定的actor

时间:2012-11-22 16:26:01

标签: java multithreading scala opengl akka

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

到现在为止,我不得不将OpenGL线程中的消息发送给系统中的actor,这非常有效。我现在面临着以相反的方式发送消息的需要,但当然我不能简单地将OpenGL放在一个actor中,因为这将破坏它从单个线程运行的要求。

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

此致

1 个答案:

答案 0 :(得分:7)

您可以使用PinnedDispatcher为每个角色使用单个帖子。根据文件:

  

这个调度程序为每个使用它的actor赋予一个唯一的线程;   即每个actor都有自己的线程池,只有一个线程   游泳池。