[HOpenGL] threading and OpenGL - some answers
Jules Bean
jules at jellybean.co.uk
Sun Oct 7 18:12:00 EDT 2007
Hi,
I managed to get my openGL threading working and I thought I'd post the
results here for the mailing list archives if nothing else.
I was already aware that it wouldn't be possible to make openGL calls
from another thread unless I took care with forkOS and bound threads.
That's ok, because I was planning to do only do openGL in the main
thread and just do 'work' in other threads.
Just using forkIO naively works, but with some caveats: your worker
threads only get processing time as often as your 'idle' callback kicks
in, and if they work the CPU hard, the UI becomes unresponsive.
The solution to this is
(a) compile with ghc -threaded, to use the properly threaded RTS.
This makes things quite a bit more responsive (and worker threads run
quite happily without needing idle callbacks) but the UI still feels a
little sticky.
(b) run with +RTS -C0 -RTS to make thread switching more aggressive, or
-N2 if you have more than one CPU/core.
Then everything works nicely.
Jules
More information about the HOpenGL
mailing list