> > this locking construct is rahter awkward; is it possible to refactor the > > code such that you can down and up in the same function ? > > Yes, at the cost of some minor code duplication or the introduction of > another variable. Is that preferable? Is holding the lock across function > calls a Bad Idea? holding lock across function calls isn't, unlocking in another function than you take the lock is. For one it makes auditing the code a lot harder.