On Sunday 18 February 2007 02:16 pm, Timmo Stange wrote:
Frank Mori Hess wrote:
I stand corrected, my deadlock detector must need tune-up. Dropping the slot mutex before executing has made this deadlock go away too though.
Hm, since you do the locking in the slot_call_iterator, isn't it the combiner which actually controls locks on the per-slot mutexes? That may be problematic with respect to iterator copies.
I've just checked in some clean-ups, so the iterator doesn't keep a scoped pointer to a lock anymore. I changed lockNextCallable() so it uses the locking form of blocked() and the iterator doesn't need any explicit locking at all (correct me if I'm wrong). Also, it allowed me to dump that memory pool stuff that was trying to optimize dynamic allocation of scoped locks. -- Frank