This is the mail archive of the pthreads-win32@sources.redhat.com mailing list for the pthreas-win32 project.


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

Re: mutex_lock on solaris vs. winnt


Since Hung's message describes it as the behaviour being sought,
I would just add that both Solaris and Pthreads-win32 have
read-write locks.

      ---------------------------
      Read/Write Locks:
      ---------------------------
      pthread_rwlock_init
      pthread_rwlock_destroy
      pthread_rwlock_tryrdlock
      pthread_rwlock_trywrlock
      pthread_rwlock_rdlock
      pthread_rwlock_rwlock
      pthread_rwlock_unlock                                             

Ross

"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...
> 
> Cheers,
> 
> John.
> 
> -----Original Message-----
> From: Hung Huynh [mailto:Hung.Huynh@emw.ericsson.se]
> Sent: Thursday, July 27, 2000 12:37 PM
> To: pthreads-win32@sourceware.cygnus.com
> Subject: mutex_lock on solaris vs. winnt
> 
> Hi!
> 
> 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
> 1999-11-02)
> 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
> information
> on this. Thank you in advance.
> 
> /Hung

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