В настоящее время я пытаюсь использовать Scala и Akka в приложении, которое использует LWJGL. Как известно, вы действительно не можете вызывать вызовы OpenGL за пределами основного потока приложения. Это создает проблему, если я хочу использовать какой-либо актер для рендеринга (либо одного основного актера, который, например, истощает очередь команд рендеринга, так и нескольких участников, которые могут в любое время выдавать произвольные команды OpenGL), поскольку я не видел способ запуска любого актера в определенном потоке. Либо привязывание конкретного актера к потоку, либо инструктирование актера для запуска в определенном потоке в какой-то момент. (a la Objective-C's PerformSelectorOnMainThread)Pin/Run Akka Актер в главной теме
Есть ли способ привязать «рендеринга» актера к основному потоку или запустить какой-либо актер в основном потоке в какой-то момент в будущем, после чего он будет возможность выпускать вызовы OpenGL? (Или даже некоторые другие решения, я открыт для идей)
Akka не может быть очень хорошим вариантом для этого. Хотя он и обеспечивает то, о чем вы просите, он предназначен только для модульного тестирования. http://doc.akka.io/docs/akka/2.2.1/scala/testing.html#scala-callingthreaddispatcher – Ryan
Вы можете создать цикл сообщений в основном потоке и просто потреблять сообщения от участников. Он может сидеть в какой-то очереди «Runnable». –