threads/150889: PTHREAD_MUTEX_INITIALIZER + pthread_mutex_destroy () == EINVAL

Jung-uk Kim jkim at FreeBSD.org
Fri Sep 24 03:48:56 UTC 2010


On Thursday 23 September 2010 06:44 pm, Daniel Eischen wrote:
> You shouldn't have to call pthread_mutex_init() on a mutex
> initialized with PTHREAD_MUTEX_INITIALIZER.  Our implementation
> should auto initialize the mutex when it is first used; if it
> doesn't, I think that is a bug.

Ah, I see.  I verified that libthr does it correctly.  However, that's 
a hack and it is far from real static allocation although it should 
work pretty well in reality, IMHO.  More over, it will have a 
side-effect, i.e., any destroyed mutex may be resurrected if it is 
used again.  POSIX seems to say it should return EINVAL when it 
happens. :-(

> You _do have_ to lock the mutex before calling a condition
> wait, however.  This is a POSIX requirement.

Yes, understood.

Thanks,

Jung-uk Kim


More information about the freebsd-threads mailing list