Any lightweight way for one thread to force another thread to suspend execution?

From: Eric Smith
Date: Fri Jun 20 2008 - 20:32:30 EST


Is there any method for one thread to force another thread to suspend
execution, then later let it resume, that is lighter weight than using
signals? I don't need it to be portable to anything other than Linux.
The suspend needs to be synchronous, but resume doesn't.

What I've thought about so far (but haven't tested) for thread A
to suspend thread B is to use a signal and two pthread conditions:

Thread A Thread B
----------------------- -----------------------
send signal to B

wait on a cond 1

enter signal handler

signal cond 1

wait on cond 2

wake up
do stuff that needs
thread B suspended

signal cond 2

continue wake up


Thanks for any suggestions!
Eric Smith

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/