Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin AT sources DOT redhat DOT com Message-ID: <3AEF04AC.62D56B1B@trex.rtpnc.epa.gov> Date: Tue, 01 May 2001 14:47:08 -0400 From: Greg Smith X-Mailer: Mozilla 4.74 [en] (WinNT; U) X-Accept-Language: en MIME-Version: 1.0 To: greg smith Subject: loop in pthread_cond_broadcast Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Below is a sample program that illustrates a loop in pthread_cond_broadcast() when called the second time. CPU utilization goes to 100% and the function never returns. Thanks, Greg gsmith AT GREG ~ $ cat ptbarf.c #include #include void *baby(); pthread_cond_t cond; pthread_mutex_t lock; pthread_attr_t attr; pthread_t tid; int main () { int i; pthread_cond_init(&cond, NULL); pthread_attr_init(&attr); pthread_mutex_init(&lock, NULL); pthread_mutex_lock(&lock); pthread_create(&tid, &attr, baby, NULL); for (i=0; i<10; i++) { sleep(1); printf("before cond wait\n"); pthread_cond_wait(&cond, &lock); printf("after cond wait\n"); } pthread_mutex_unlock(&lock); } void *baby() { while (1) { sleep(2); pthread_mutex_lock(&lock); printf("before cond broadcast\n"); pthread_cond_broadcast(&cond); printf("after cond broadcast\n"); pthread_mutex_unlock(&lock); } } gsmith AT GREG ~ $ gcc -o ptbarf ptbarf.c gsmith AT GREG ~ $ ./ptbarf before cond wait before cond broadcast after cond broadcast after cond wait before cond wait before cond broadcast -- Want to unsubscribe from this list? Check out: http://cygwin.com/ml/#unsubscribe-simple