I think the problem here is the blocking nature of the socket calls in the director functions combined with the sudo threaded nature of director functions.
My theory: Vizard allocates some CPU time to director functions every frame. Because only one thread/director function can access the Python interpriter at a time, if a director function takes all the time Vizard allocates for director functions in a frame, the other director functions will not get executed in that frame.
The solution is to make you director function call non-blocking (aka faster) network functions, or bust some C code to use real threads.
Farshizzo, does this make sense?
Maybe all you need is to add a viz.waitframe() call in the while loops to yield CPU to other director functions?
As a side note, multi-threading really messes with my mind.
__________________
Paul Elliott
WorldViz LLC
|