[Barrelfish-users] thread_cond_wait() and disp_disable()

Georgios Varisteas yorgos at kth.se
Fri Jul 13 13:52:01 CEST 2012


I've been experiencing unexpected behavior with condition variables.

I have two threads running on a single core, namely the master core 0, and I thread_cond_wait() one of them; normally it should block while the other thread continues uninterrupted. However, everything stop.

I looked at the code and, if I'm not mistaken, the dispatcher is disabled for achieving atomicity in the wait but not enabled again, until the waiting thread is signaled. Is that correct? Does that mean that the thread model in Barrelfish is meant to support just one thread per core per domain?

If my intuition is correct, is there an alternative to blocking a thread in a way that another thread can awake it, allowing other threads to work on that same dispatcher? Or should/can I have multiple dispatchers on the same core in the same domain?


More information about the Barrelfish-users mailing list