Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > read / write locks and deadlock detection

Reply
Thread Tools

read / write locks and deadlock detection

 
 
Jürgen Devlieghere
Guest
Posts: n/a
 
      11-29-2005
Hi,

We are creating event-driven multi-threaded applications on a daily basis.
To help us solving deadlocks, we implemented a CriticalSection class that
does dead-lock detection: an attempt to Enter() the critical section that
would cause a deadlock logs the complete deadlock loop (thread / Critical
section) and raises an exception. It has helped us a lot in the past.

However, to prevent further deadlocks, and to get a higher performance, we
want to implement read / write locks.

So, we need:
- read / write locks
- with deadlock detection
- the locks should be re-entrant (like a mutex: a thread can ask again for
the lock and gets it immediately. There is a counter inside that ensures
that the lock is only released after an equal number of calls of Leave() as
there were of Enter().

I found a good article about how to implement a read/write lock on MSDN
written by Ruediger R. Asche, but that code doesn't support re-entrance by
the same thread.

Any of you has a reference to a good article / source code / library?

I realize there are ways to avoid dead-locks:
- work with 1 worker thread (bad performance on multi-processor)
- collect data on the higher level and pass that along. That we did for as
long as the data still was contained where it belonged.

Jürgen


 
Reply With Quote
 
 
 
 
Niklas Norrthon
Guest
Posts: n/a
 
      11-29-2005
"Jürgen Devlieghere" <> writes:

> Hi,
>
> We are creating event-driven multi-threaded applications on a daily basis.


[snip]

Try comp.programming.threads.

/Niklas Norrthon
 
Reply With Quote
 
 
 
 
peter koch
Guest
Posts: n/a
 
      11-29-2005

Jürgen Devlieghere skrev:

> Hi,
>
> We are creating event-driven multi-threaded applications on a daily basis.
> To help us solving deadlocks, we implemented a CriticalSection class that
> does dead-lock detection: an attempt to Enter() the critical section that
> would cause a deadlock logs the complete deadlock loop (thread / Critical
> section) and raises an exception. It has helped us a lot in the past.
>
> However, to prevent further deadlocks, and to get a higher performance, we
> want to implement read / write locks.
>
> So, we need:
> - read / write locks
> - with deadlock detection
> - the locks should be re-entrant (like a mutex: a thread can ask again for
> the lock and gets it immediately. There is a counter inside that ensures
> that the lock is only released after an equal number of calls of Leave() as
> there were of Enter().
>
> I found a good article about how to implement a read/write lock on MSDN
> written by Ruediger R. Asche, but that code doesn't support re-entrance by
> the same thread.


Reentrancy is not something you should strive for unless it is
absolutely necessary. In my code I do checks when using reentrant
mutexes (or critical section or whatever you call the beast) that the
mutex is not locked twice by the same thread. The reason is (put
briefly) that you better know what your code is up to.
But this is all for comp.programming.threads where you should direct
your questions.

/Peter
[snip]
> Jürgen


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
pthread rwlock deadlock detection Jaydeep Chovatia C++ 2 10-06-2011 07:42 AM
Read-only access to FAT32/NTFS files w/ write locks? Matt C++ 2 04-22-2005 06:01 PM
Deadlock detection Duncan Grisby Python 7 12-11-2004 07:08 AM
read write locks in java sbboria@yahoo.com Java 1 06-01-2004 04:36 PM
read write locks for xml nodes in java sbboria@yahoo.com Java 1 05-31-2004 09:17 PM



Advertisments