From: Yuval Ronen (ronen_yuval_at_[hidden])
Date: 2007-08-22 11:22:33


Howard Hinnant wrote:
> On Aug 22, 2007, at 8:05 AM, Yuval Ronen wrote:
>
>> Yuval Ronen wrote:
>>> Howard Hinnant wrote:
>>>
>>>> Because of this, it is
>>>> not possible (in the above use case) for there to be a set_mutex on
>>>> the condition to change the facade, since both facades are
>>>> simultaneously in use.
>>> Yes, I've realized that too late. My set_mutex() function is useless
>>> because it has to be atomic with the wait().
>> I've just thought that it might be not so useless after all.
>> 'set_mutex'
>> is supposed to be called after the mutex was locked, and before
>> calling
>> condition::wait. Because the mutex is locked, we are protected against
>> simultaneous use. There can be a problem when multiple readers lock
>> for
>> read, and simultaneously call set_mutex, but if we assume they all set
>> the same mutex it shouldn't be a problem.
>
> How would wake from wait be handled? I.e. what mutex (facade) would
> it use to lock with? The last one set may not correspond to the
> proper one on wake.

It would lock the same mutex it unlocked upon entering wait().