[webkit-dev] Expected behavior of Mutex.lock()
dimich at chromium.org
Thu Jun 11 10:39:42 PDT 2009
Then perhaps all implementations could ASSERT in debug on mutex reentrancy
to help discover where differences in behavior are accidentally 'used' (a
stuck thread may sometimes mask some other issues).
It's not good to have this kind of differences in 'cross-platform' code,
sooner or later it'll cause very cryptic bugs, especially since developers
with Windows background take reentrancy of critical section for granted.
On Tue, Jun 9, 2009 at 11:34 AM, Jeremy Orlow <jorlow at chromium.org> wrote:
> I actually had exact the same question (but never got around to asking it).
> Given that pthreads' implementation is more strict, it'd seem like mutexes
> are not supposed to be reentrant. Maybe the windows version should ASSERT
> on reentrancy when in debug mode?
> On Tue, Jun 9, 2009 at 11:09 AM, Drew Wilson <atwilson at google.com> wrote:
>> Any insights here? I'd be happy to add some documentation to Mutex if
>> someone can verify what the intended behavior is...
>> -atw "sending emails to webkit-dev during WWDC is probably futile, I know
>> On Sat, Jun 6, 2009 at 8:57 AM, Drew Wilson <atwilson at google.com> wrote:
>>> I can't seem to find any documentation as to what the expected behavior
>>> of Mutex.lock() is with regard to calling lock() recursively on the same
>>> Looking at the pthreads implementation, it appears that when we create
>>> the mutex we pass null as the attributes, which gives us the default
>>> behavior (not re-entrant).
>>> The Windows implementation uses EnterCriticalSection which *is*
>>> I'm assuming that the pthreads implementation is the correct one (calling
>>> Mutex.lock() twice on the same mutex on a single thread should deadlock the
>>> thread) but I wanted to verify this since the implementations seem to vary.
>> webkit-dev mailing list
>> webkit-dev at lists.webkit.org
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the webkit-dev