[PD-dev] outlet_* in threaded externals?

Olaf Matthes olaf.matthes at gmx.de
Fri Aug 2 21:51:43 CEST 2002


Hi,

since the outlet_*() functions in Pd are not threadsafe, what's the best
way to output data in a threaded external?

I've used a t_clock that gets called (clock_delay(x->x_outclock, 0))
from the child thread (in oggcast~ for example). But my externals using
this method tend to crash after a while (with a segfault in pd.dll under
Win2k). Sometime after a few minutes, sometimes it takes several hours.
I've now deleted this functions and it seems to work. But I've lost
output!

Is there any other way to do this? I could use a t_clock that calls
itselfe over and over again, lets say every 10 milliseconds and check
the variables for changes... Any other ideas? Or any other ideas what
the reason for the crashes might be?

Olaf

PS:
a short list of precautions I've (not successfully) tried to get the
t_clocks perform all right:
- locking the mutex before calling outlet_*
- unsetting the t_clock before setting it (in case it's already set and
not yet executed by the scheduler) BTW, is there a way to test if a
t_clock is already set?
- making local copy of variables to output





More information about the Pd-dev mailing list