
Roland Schwarz wrote:
Peter Dimov wrote:
No, lk is explicitly documented as being not thread safe. When two threads attempt to lock lk at the same time, the behavior is undefined.
Yes I know this, and I also explicitly stated it.
Indeed, sorry for not paying attention. But the only point of locking a mutex is to be able to do that from two different threads at the same time. If you know that only one thread is accessing the scoped_lock at a time, you wouldn't need a scoped_lock in the first place.
But on the other hand: A mutex must not be locked from one thread and unlocked from another too. True?
True.
So this (unscoped) usage is dangerous in any case, isn't it?
True. The recommended way to lock a mutex is still via the scoped_lock. The direct interface is provided because when it's needed, there is no safer way to get it. Sometimes you just need to lock the mutex in one place and unlock it in another, and there is no way around it.