From owner-FreeBSD-tech-jp@jp.freebsd.org  Tue May 11 16:22:23 1999
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id QAA73747;
	Tue, 11 May 1999 16:22:23 +0900 (JST)
	(envelope-from owner-FreeBSD-tech-jp@jp.FreeBSD.org)
Received: from brains.co.jp (brgate.brains.co.jp [202.230.85.1])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id QAA73742
	for <FreeBSD-tech-jp@jp.freebsd.org>; Tue, 11 May 1999 16:22:21 +0900 (JST)
	(envelope-from kagami@brains.co.jp)
Received: from brains.co.jp (micronfw.brains.co.jp [202.230.85.2])
	by brains.co.jp (8.9.1a/3.7W) with ESMTP id QAA04277
	for <FreeBSD-tech-jp@jp.freebsd.org>; Tue, 11 May 1999 16:20:30 +0900 (JST)
Message-ID: <3737D9A6.E0E62C88@brains.co.jp>
Date: Tue, 11 May 1999 16:17:58 +0900
From: KAGAMI Hiromichi <kagami@brains.co.jp>
Organization: Brains Corp
X-Mailer: Mozilla 4.08 [ja_JP.EUC] (X11; I; FreeBSD 3.1-RELEASE i386)
MIME-Version: 1.0
To: FreeBSD-tech-jp@jp.freebsd.org
Content-Type: text/plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Reply-To: FreeBSD-tech-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+990430
X-Sequence: FreeBSD-tech-jp 2177
Subject: [FreeBSD-tech-jp 2177] pthread_cond_timedwait
Errors-To: owner-FreeBSD-tech-jp@jp.freebsd.org
Sender: owner-FreeBSD-tech-jp@jp.freebsd.org
X-Originator: kagami@brains.co.jp

$B6@$H?=$7$^$9(B.
$B=i$a$FEj9FCW$7$^$9(B.

$BI,MW$,$"$C$F(B 10 $B8D0J>e$N%W%m%;%9$,(B
$BA4BN$H$7$F(B 2000 $B8D0J>e$N%9%l%C%I$r(B
$B5/F0$9$k%W%m%0%i%`$r3+H/$7$F$$$^$9(B.

pthread_cond_timedwait $B$r;HMQ$7$?(B
$B%W%m%0%i%`$,(B pthread_cond_broadcast $B$N(B
$B8F=P;~$KMn$A$k>l9g$,$"$k$N$G(B
$BD4$Y$F$_$^$7$?(B.
$B<!$N>l9gITET9g$,H/@8$9$k$h$&$G$9(B.

thread 0  ---> pthread_cond_timedwait $B$GBT5!(B.
thread 0  ---> pthread_cond_timedwait $B$+$i%?%$%`(B
               $B%"%&%H$GLa$k(B.
thread 0  ---> pthread_exit $B$b$7$/$O0EL[$K=*N;$9$k(B.
thread 1  ---> thread 0 $B$,2a5n$K(B pthread_cond_timedwait
               $B$G;HMQ$7$F$$$?>r7oJQ?t$G(B
                pthread_cond_broadcast $B$N8F$S=P$7(B.

$B$D$^$j(B,$B=*N;$7$?%9%l%C%I$,2a5n$K(B pthread_cond_timedwait
$B$G;HMQ$7$F$$$?>r7oJQ?t$KBP$7$F(B pthread_cond_broadcast
$B$r8F$S=P$9>l9g$KITET9g$,H/@8$9$kMM$G$9(B.

/usr/src/lib/libc_r/uthread/uthread_cond.c $B$r;2>H$9$k$H(B.

245 $B9TL\6aJU(B(pthread_cond_timedwait)
              /* Lock the mutex: */
              if ((rval = pthread_mutex_lock(mutex)) != 0) {
               }
               /* Check if the wait timed out: */
                else if (_thread_run->timeout) {
                   /* Return a timeout error: */
                    rval = ETIMEDOUT;
                    /* $B<!$N9T$rDI2C$9$kI,MW$,$"$j$=$&(B */
                    _thread_queue_remove(&(*cond)->c_queue,
_thread_run);
                }

334 $B9T6aJU(B(pthread_cond_broadcast)
            while ((pthread =
                _thread_queue_deq(&(*cond)->c_queue)) != NULL) {  <---
$B$3$3$GMn$A$k>l9g$,$"$k(B.
                    /* Allow the thread to run: */
                    PTHREAD_NEW_STATE(pthread,PS_RUNNING);
              }
              break;

pthread_cond_broadcast $B$G$O3:Ev$N>r7oJQ?t$,J];}$9$k(B,
$B!V$=$N>r7oJQ?t!W$GBT5!$7$F$$$k%9%l%C%IA4BN$r(B
$B5/F0$7$^$9$,(B,$B=*N;$7$?%9%l%C%I$N>l9g(B,
$B$=$N<BBN$,$9$G$K3+J|$5$l$F$$$k$?$a$K(B
$BITET9g$,H/@8$9$k$H9M$($i$l$^$9(B.
$B>e5-$NNc$N(B thread 0 $B$,<+;&$9$kA0$K(B,$B>r7oJQ?t$,J];}$9$k(B
$BBT$A9TNs$+$i(B,$B<+J,$r:o=|$9$kJ}K!$O8+Ev$?$i$J$$(B
$BMM$J$N$G(B,$B>/$J$/$H$b(B timeout $B$N>l9g(B
pthread_cond_timedwait $BB&$G$=$N%9%l%C%I$rBT$A9TNs(B
$B$+$i:o=|$9$kI,MW$,$"$k$H;W$o$l$^$9(B.

$B>e5-$N=$@5$G(B,$B;d$N4D6-$G$O(B,
$B0BDj$7$FF0:n$9$k$h$&$K$J$C$?$N(B
$B$G$9$,(B,$B$=$b$=$b>e5-$NITET9g$O;d$,>!<j$K(B
$BITET9g$H9M$($F$$$k$@$1$G$"$j(B,$B;EMM$J$N$+$b(B
$BCN$l$^$;$s(B. $B$^$?=$@5$NJ}K!$b$b$C$HNI$$J}K!$,(B
$B$"$k$N$+$bCN$l$^$;$s(B.

$B$3$N$"$?$j$K>\$7$$J}$,$*$i$l$^$7$?$i(B
$B$465<(D:$-$?$$$HB8$8$^$9(B.

$B$h$m$7$/$*4j$$CW$7$^$9(B.

=======================================
SUN $B$,$"$s$J$K@kEA$7$F$$$k$N$K(B
$B>/$J$/$H$b(B single CPU $B$G$O(B
FreeBSD $B$N%9%l%C%I$NJ}$,B.$=$&(B
========================================

--
$B6@(B $B90F;(B
$B3t<02q<R%V%l%$%s%:(B
158 $BEl5~ET@$EDC+6h6L@n(B 2-27-8
    $B6L@n%S%8%M%9%Q!<%/(B 4F
Tel    03-3708-8761
Fax    03-5717-7172
WWW    http://www.brains.co.jp/
E-mail kagami@brains.co.jp


