From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4083 invoked by alias); 8 Dec 2005 15:00:17 -0000 Received: (qmail 4075 invoked by uid 22791); 8 Dec 2005 15:00:17 -0000 X-Spam-Check-By: sourceware.org Received: from mail12.ca.com (HELO mail12.ca.com) (141.202.248.38) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 08 Dec 2005 15:00:15 +0000 Received: from USILMS12.ca.com ([141.202.201.12]) by mail12.ca.com with Microsoft SMTPSVC(6.0.3790.1830); Thu, 8 Dec 2005 10:00:07 -0500 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Subject: RE: Good Algorithm for "Multiple Readers"/"Multiple Writers" Date: Thu, 08 Dec 2005 15:00:00 -0000 Message-ID: <163D3F27E93137439CEB0BB9382257E7187681@USILMS12.ca.com> From: "Evstiounin, Mikhail" To: "Stephen Croall" , X-IsSubscribed: yes Mailing-List: contact pthreads-win32-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: pthreads-win32-owner@sourceware.org X-SW-Source: 2005/txt/msg00136.txt.bz2 You can get more parallelism in terms of processing, but you are not going to get more parallelism in terms of getting access to the protected resource. In the last sense there is no difference between single and multiple writers and advice given by Rustam is correct. Just call pthread_rwlock_timedwrlock in every writer. Model single writer multiple reader means that at any given moment you can have multiple readers having access to a resource and only one writer. That does not mean that you have to have one writer in your program.=20 -----Original Message----- From: Stephen Croall [mailto:scroall@tibco.com]=20 Sent: Thursday, December 08, 2005 9:08 AM To: Evstiounin, Mikhail; pthreads-win32@sources.redhat.com Subject: RE: Good Algorithm for "Multiple Readers"/"Multiple Writers" =20 We already use read/write locks in places but for greater parallelism multiple reader and multiple writer locks would be better. The current read/write lock implementation in POSIX doesn't support multiple writers. Only one writer thread can process at a time - as I would expect. I'm after a good model for writing a "many readers"/"many writers" lock implementation, which is portable from Windows to UNIX. Steve. -----Original Message----- From: Evstiounin, Mikhail [mailto:Mikhail.Evstiounin@ca.com]=20 Sent: 08 December 2005 14:02 To: Stephen Croall; pthreads-win32@sources.redhat.com Subject: RE: Good Algorithm for "Multiple Readers"/"Multiple Writers" I did not quite get it. The difference between reader and writer is that reader locks out writer and lets other readers continue without waiting while writer acquire an exclusive lock. Multiple writers will have serialized access to a resource in any case. So, there no difference from this point of view between "one writer -- many readers" and "many writers -- many readers". So, if you are going to use FIFO (or you don't care -- I made an assumption that all requests for resource locking is based on FIFO which is not true, generally speaking) in terms of how to process request queue then posix approach is enough. -----Original Message----- From: pthreads-win32-owner@sourceware.org [mailto:pthreads-win32-owner@sourceware.org] On Behalf Of Stephen Croall Sent: Thursday, December 08, 2005 4:57 AM To: pthreads-win32@sources.redhat.com Subject: RE: Good Algorithm for "Multiple Readers"/"Multiple Writers" Thanks, but the POSIX read/write interface supports a single writer vs. multiple readers. I'm after multiple writers & readers i.e. multiple threads can perform writing but readers must wait and vice versa. Steve. -----Original Message----- From: Rustam T. Usmanov [mailto:rustam@unilib.neva.ru]=20 Sent: 08 December 2005 09:54 To: Stephen Croall Subject: Re: Good Algorithm for "Multiple Readers"/"Multiple Writers" On Thu, 8 Dec 2005, Stephen Croall wrote: > Is anyone aware of whether POSIX implements this type of lock? pthread_rwlock ? See http://www.opengroup.org/onlinepubs/009695399/functions/pthread_rwlock_i nit.html -- Rustam Usmanov, systems engineer Institute of Consortia Library Information Systems, St.Petersburg State Polytechnic University Address: 29, Politekhnitcheskaya str., St.Petersburg, 195251, Russia Tel/fax: +7 812 552 7654