Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2007-08-25 11:11:59

Howard Hinnant:

> On Aug 22, 2007, at 11:55 AM, Howard Hinnant wrote:
>> Here's checked_condition:
> After investigating the use cases for the "unchecked condition", I
> realized that my earlier checked_condition that I posted here wasn't
> quite right, at least if you considered it a debug tool. To this end
> I've rewritten it, and renamed it to condition_debug to emphasize its
> role. The previous version was allowing default constructed
> conditions to wait on different mutexes at the same time. This
> revised condition_debug allows default constructed conditions to only
> wait on different mutexes at different times. All simultaneous waits
> must be on the same mutex (even for a default constructed condition).


The checks seem too strict. It's valid to notify_all and then rebind the
condition to a different mutex, but your condition_debug will likely
assert/throw as the awakened threads have not yet executed their postchecks.
(Unless I'm overlooking something.)

It's quite likely that only the implementor of pthread_cond_t may catch all
errors in the general case. This does not diminish the utility of a checked
condition that catches most errors in the typical case IMO.

Boost list run by bdawes at, gregod at, cpdaniel at, john at