This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Nested calls to Mutexes


On Thu, Mar 22, 2001 at 04:46:30PM +0000, Jonathan Larmour wrote:

> [ Sent this yesterday but it bounced! ]
> 
> Rosimildo daSilva wrote:
> > 
> > Many implementations out there support the concept of
> > nested/balanced mutex calls. That is the programmer's
> > expectation. Sorry, to put this way, but I consider
> > this a *bug*.
> 
> POSIX doesn't. Quite the opposite in fact, and that's hardly an obscure
> standard....
> "An attempt by the current owner of a mutex to relock the mutex results in
> undefined behavior".

Well, this isn't entirely true. The default behaviour is as you describe, but
this can be changed using pthread_mutexattr_setkind_np(attr, kind)
where kind can take the value PTHREAD_MUTEX_RECURSIVE_NP to create recursive
mutexes (reading from the man page for pthread_mutexattr_setkind_np(3)
contained in glibc 2.2).
I've run across this before, but it's easy to solve using some wrapper
function to create recursive mutexes.

Regards
/Martin

> 
> And "undefined behavior" means anything from the recursive mutexes you want
> to contacting NORAD with the missile codes to start World War III.
> 
> So don't do this, the world is in your hands. :-)
> 
> Jifl
> -- 
> Red Hat, Rustat House, Clifton Road, Cambridge, UK. Tel: +44 (1223) 271062
> Maybe this world is another planet's Hell -Aldous Huxley || Opinions==mine
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]