Короткий вопрос:
Учитывая модель параллелизма Clojure, как мне убедиться, что все функции LWJGL OpenGL Update вызываются из одного и того же потока?
Длинный вопрос
После долгой и славной битвы Использование lwjgl в Leiningen/Clojure теперь у меня есть LWJGL + Leiningen + Clojure работают вместе.
Однако, согласно документации LWJGL, похоже, что клиентские команды OpenGL имеют локальное состояние потока, и если я вызываю команды OpenGL из разных потоков, могут произойти Bad Things (TM).
Таким образом, мой вопрос: как правильно в Clojure настроить что-то вроде потоков Swing (но я не могу использовать потоки Swing/должен настроить свои собственные), чтобы:
(1) существует один основной поток, отвечающий за все вызовы OpenGL
(2) другие потоки взаимодействуют с этим основным потоком для координации вызовов OpenGL.
Мой фон
Я знаком с потоками в C/C++. Я знаком с моделью агента/атома/ссылки Clojure. Однако я не знаком с "ручным" параллелизмом/поточностью в Clojure.
Спасибо!