【发布时间】:2012-05-20 14:14:29
【问题描述】:
小问题:
鉴于 Clojure 的并发模型,我如何确保所有 LWJGL OpenGL 更新函数都是从同一个线程调用的?
长问题
经过漫长而光荣的战斗,Using lwjgl in Leiningen/Clojure,我现在有 LWJGL + Leiningen + Clojure 一起工作。
但是,根据 LWJGL 文档,OpenGL 客户端命令似乎具有线程本地状态 - 如果我从不同线程调用 OpenGL 命令,可能会发生坏事 (TM)。
因此,我的问题是:在 Clojure 中设置 Swing Threads 之类的正确方法是什么(但我不能使用 Swing Threads / 必须自己设置)这样:
(1) 有一个主线程负责所有 OpenGL 调用
(2) 其他线程与该主线程进行某种类型的通信以协调 OpenGL 调用
我的背景
我熟悉 C/C++ 中的线程。我熟悉 Clojure 的代理/原子/参考模型。但是,我不熟悉 Clojure 中的“手动”并发/线程。
谢谢!
【问题讨论】:
标签: multithreading concurrency clojure lwjgl