From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Medina, Aurelio" To: "'Mikael.Ambrus@elema.siemens.se'" , pthreads-win32@sourceware.cygnus.com Subject: RE: pthread_cond_timedwait Date: Thu, 09 Sep 1999 09:39:00 -0000 Message-id: X-SW-Source: 1999/msg00083.html To all, Speaking of read/write locks, does anyone know if the POSIX read/write lock routines (e.g. pthread_rwlock_init()) that I submitted will eventually become part of the Pthreads-Win32 library? Seems like someone is already working on another implementation. The routines that I submitted were introduced in UNIX98 and are currently a X/Open standard. These routines are portable and are currently available on HP-UX 11.0. Thanks, Aurelio Medina -----Original Message----- From: Mikael.Ambrus@elema.siemens.se [SMTP:Mikael.Ambrus@elema.siemens.se] Sent: Thursday, September 09, 1999 10:47 AM To: pthreads-win32@sourceware.cygnus.com Subject: pthread_cond_timedwait [Ambrus Mikael] Dear pthreads colleagues, I'm writing a program that uses pthread_cond_timedwait. In the book that I'm using (Pthreads Programming by Nicols, Buttlar & Proulux Farell ) it says that this function should suspend the thread until some other thread calls pthread_cond_signal, pthread_cond_broadcast OR the system timer is greater than or equal to the third argument (abstime). Since clock_gettime is not implemented and I cant find some other function that tells me the system time, I've tried to implement my own version of clock_gettime by using the ansi function clock(). This function returns the number of ticks that has elapsed since the program was started. But it seams that this is not the same absolute time that pthread_cond_timedwait requires since the thread won't awaken. Is there another way to acquire the relevant system time? Another thing that has bothered me is that I recently downloaded the latest snip of phtreads and now my read/write locks won't work. Since the precompiled lib isn't recognised by the linker (neither with gcc v20.1 nor MSVC 6.0) for some reason, I built the libs using the buildlib.bat provided. Here's a snip of the code that fails: int pthread_rdwr_wunlock_np ( pthread_rdwr_t *rdwrp ){ assert( pthread_mutex_lock(&(rdwrp->mutex)) == 0 ); if (rdwrp->writers_writing == 0) { assert( pthread_mutex_unlock(&(rdwrp->mutex)) == 0 ); return(-1); }else{ rdwrp->writers_writing = 0; assert(pthread_cond_broadcast(&(rdwrp->lock_free)) == 0); }; assert( pthread_mutex_unlock(&(rdwrp->mutex)) == 0 ); return(0); }; pthread_cond_broadcast returns EINVAL. Does anyone recognise this problem? Wkr Michael Ambrus Siemens Elema >