
Yuval Ronen:
Peter Dimov wrote:
I meant "helps people avoid accidental mistakes at the time they're writing the code". The function encourages correct use by asking for a lock, implying that the mutex needs to be locked first.
Hinting the user to lock a mutex by accepting a lock is getting too psychological for my taste. If it was enforced by the compiler, then maybe, but since the compiler can't...
The hint isn't particularly subtle. You have to pass a lock, and this _is_ enforced by the compiler. The rest of the enforcement (that the lock 'owns' the correct mutex) is necessarily postponed to run time; we simply can't do better than that. I'm really not sure how you propose to achieve the same level of encouraging and enforcing correct use with a wait function that doesn't take a lock argument, and I'm also unsure what specific problems with requiring a lock argument are you trying to solve.