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