Paul Davis wrote:
>
> >> it means that you can get the same safety with a single-thread
> >> approach.
> >
> >In multi thread you can kill/restart a blocked component without to
> >restart the whole engine.
> >
> >With single thread this is not feasible
>
> disagree. assuming you can detect the blocked component, you just
> avoid running it any more (i.e. remove it from the list of active
> components). you might also instantiate a new instance of it (though
> this is unlikely to solve whatever problem caused it to block).
>
> we do something like this in ardour, though its user driven - i have
> to frequently "turn off" steve's retroflanger because its not
> RT-friendly with certain settings. you can turn it off, adjust the
> parameters, turn it back on. it works fine. it doesn't handle
> "blocking", but we've already established that blocking would need to
> be handled by an asynch timer.
??? If you do in engine:
proc();
and proc() loops or hangs you can't recover from this situation (signal
handler cannot do a longjmp).
While having it on a thread you can set a flag in signal handler of
engine, pthread_kill the culprit and continue.
--
Abramo Bagnara mailto:[EMAIL PROTECTED]
Opera Unica Phone: +39.546.656023
Via Emilia Interna, 140
48014 Castel Bolognese (RA) - Italy
ALSA project http://www.alsa-project.org
It sounds good!