On Sun, Dec 06, 2009 at 02:29:01PM +0200, Katz, Jacob wrote:
Yes, I meant in the question that I was looking for something creative, both fast responding and not using 100% CPU all the time.
I guess I’m not the first one to face this question. Have anyone done anything “better” than the simple solution?
I got tired of seeing both cpus at 100% load, and based on suggestions
from Jeff Squyres and Eugene Loh, wrote MPI_Recv.c and MPI_Send.c. I
load these with my application, and bingo! Only one cpu busy at any
given time.
They use a graduated sleep; the first sleep is short, the second is
twice as long, and so on, up to a maximum sleep time.
Another option is to use a condition variable -- e.g.,
pthread_cond_wait() and the like. So, there is a certain wake-up time,
but you don't need to tune sleep times or wait for some long sleep
time, etc.