This is the mail archive of the
mailing list for the pthreas-win32 project.
Re: mutex_lock on solaris vs. winnt
- To: "Bossom, John" <John dot Bossom at Cognos dot COM>
- Subject: Re: mutex_lock on solaris vs. winnt
- From: Ross Johnson <rpj at ise dot canberra dot edu dot au>
- Date: Fri, 28 Jul 2000 09:52:56 +1000
- CC: "'Hung Huynh'" <Hung dot Huynh at emw dot ericsson dot se>, pthreads-win32 at sourceware dot cygnus dot com
- Organization: University of Canberra, Information Sciences and Engineering
- References: <430F887D415DD1118C2700805F31ECF1037F128B@sota0005.cognos.com>
- Reply-To: rpj at ise dot canberra dot edu dot au
Since Hung's message describes it as the behaviour being sought,
I would just add that both Solaris and Pthreads-win32 have
"Bossom, John" wrote:
> pthread_mutex is implemented on Win32 using Win32 primitive
> locking mechanisms. These primitives are inherently recursive
> in nature (i.e. the same thread may re-acquire the lock multiple
> times... internally they keep a count of the # of times it has
> been called)
> Microsoft decided to do this to prevent a thread from deadlocking
> itself. There are non-standard versions of PThreads on various
> UNIX platforms that allow you to declare a mutex as recursive.
> However, it is recommended that if you want PORTABLE code, that
> you do not rely on recursive mutex support... Since you have this
> code on UNIX and had attempted to acquire a mutex lock twice in the
> same thread, you've basically deadlocked your thread permanently...
> I would recommend you re-organize your code such that you do not
> re-acquire the same mutex...
> -----Original Message-----
> From: Hung Huynh [mailto:Hung.Huynh@emw.ericsson.se]
> Sent: Thursday, July 27, 2000 12:37 PM
> To: email@example.com
> Subject: mutex_lock on solaris vs. winnt
> I'm trying to port some code from unix (solaris) to windows nt.
> The code uses pthread mutexes to create a binary semaphore for
> reading (many-at-a-time) and writing (one-at-a-time).
> I have just found out that if you in unix do pthread_unix_lock
> twice on the same mutex, and in the same process, you will lock. But
> trying to do the same thing in windows nt (with pthread-win32 released
> won't give the same behaviour. Is this because the WaitForSingleObject
> in windows
> will allow multiple locks in the same process? Should it be like this or
> is it
> something that is just not yet implemented in pthread-win32?
> As you can tell I'm a newbie, and i'll appreciate very much any
> on this. Thank you in advance.