Ch5.pdf

Threads
%
!"# $
&"# $
' ( )
*
' (+ $,
' (% + $
! "
... ' ( .
.$
'9
# (LWP) 6+4 . + $ 0 # 1 2 34
5
' " . 4 2 : '; < . =' # 1 #( < . =' ( '
. +
.>
!"
.$( ?5 @
'1 + $ 6 <
' (
1 ( ) '<
A
.+ 1
( G )
#4
#
; C D
B-1
$ $ B-1
' ?5 ( 9 ($ E1
.$( $ F ' ( .
' ( . +$ .
$
+ H + $ '1 F ' ( G ) + $ ,
. $ 0 # 6 < 2( I '1 (
1
#
$
$J
+ 1 6K +
"-1 6
%3 2( I ($ L ' # 1
. 1
$ 1' # 1 $J
H '
= 1
E1
@
'1 ( + $ E1
4 'M L
+$ . $
#+ $
( 4 +
'H($ B
+
.$
@
' (
0 # 1( QR ($ ' ( '# -1 D
' (>
'# -1 =POSIX
; C ($ pthreads '# -1 : '# <#
.U (V ($ UI-threads '# -1 4 T ! ($ C-threds
' ( =N B 2( I '1
. #( ?5
< C E1
.>
1(
#K +
' $
# +( O
)
#+ $ .
($
'C
H' I
.
'1 ' ( . $
( <P +
4( ' (
($ 1
1
H
=Tru64 U! # =U (V
' (
> <L ' ( + < A C ' C
=2000 4 NT =98 =95 +4 4 : '# <#
U F 4 BeOS
%
,
%
' (+ $,
' (% + $
' ( )
(Many-to-One)
(One-to-One)
(Many-to-Many)
*
. '1 ) *
. '1 . *
) '1 ) *
2
%
' ( $ + $ P * G ($
QR ' ( . '1 1( QR
. #
> &# ' C
($ '
%
> &# ' C QR ' ( . '1 1( QR ' (
*
G ($
.$
.OS/2
=2000 4 NT =98 =95 +4 4 : '# <#
C ($ * G
' ( + < A C ' C #K
$,
<# > <L
.$
%
G ) $
+H * G
G ) '1 1( QR ' (
. # > &# ' C QR ' (
$ P '1 $( $ + H
; C
$ ' C QR ' (
.
+4 4 =2 U (V : '# <#
Fiber '# -1 ' 2000 4 NT
. 1
O # #K 4(
,
' ( )
' (% -
*
! &
+ $
3
exec ()
0< +
H +$
' ( + DA
:
.
.
# 9
.$
fork
* 4( 4$ U! #
( $ 1 '-C#
( $ 1 '-C# # 9
( ($
6K
' (
.
( 4$ D
: # 5( 3
1( D
«' ( * R1 » 6K ( 6
1 * & + U! #
.$
$,
$6
$ 9
. $
6
b
H '1
1 K'
:0 &< # * R1 .1
H '1 ' I 1 & $ ' ( .
: $ c P '1 * R1 .2
.)
(4$ 2( I '1 b ' (
\ 9
$ '< 9
' (
(Thread Pool)
)#*
C ($
E 34 $( ($
f
* & > G!<
2( I '1
( 1 $( (Signal Handler) * &
5
5
(
(
'1
5
: $ `( 24 , 2( I 4$ '1 > G!< ' ( * R1
( &
+ $ '1 * &
N B * &
% P * &
+ B ' (.
.
T( &# 9 1
]-" ' # 1 exec # 9 1
< 4 # 9 +$ G & H
1 0 &< # 0 &< > G!<
5
%
' ( 0 < + '-C# .
' ( + DA '-C# .
% '&
+ $ '1 # ( d e
%
# 9 ( fork ' ( . 34
( $ 1 '-C# 3 + $
' (
\
$ '-C# . # 9
K=
'(
fork ()
:
'1 + # 0 ; + $
.G $
# ' ( $ P +$ + # ( 0 &
6 <1 M 4 1 ( 3 6 - . ($ ( ' ( G
. ' (.
' (. + $, 12 9>
.$ $
#' (. 1' >
9($ . '1 J
FL+ E
V <P
$ H
4
( ! ) (Thread Pool)
( g A# + .
($
' ($ P
)#*
' (6 - + $,
$4 f ( C
.
,
' ( )
*
' (+ $,
- *
& ! "
#$ H
' ( h 6 - 64($ => 9($ > ($ 0 & 5
$ *P 3 (' i 9
' ( '< + $ & $ 2( ; '1)
' (+ !
I 1 +$ ( 1 * P
+ 4 1
. # $ +K 3
Pthreads
2 . /0&
' (+
1 (IEEE 1003.1c) POSIX $( #
$
UI-threads
QR
' ( 4 1( QR
]-" ( ' ( '# -1 ( (
C #' # 1D 4
'# -1
$ 'P
; '1 * 4( + $ 4 =
.>
$,
'# -1
G + U! #
1 Pthreads 1 4 ; 2 U (V
.
# " # 1( QR
6$
C #' # 1D 4
. ' ( &< 4
; C ($ V <P
.$
' ( G 1 (LWP) 6+4 .
+$
. # ' 5( 3'C
.$( $ LWP .
. #
. C
H
LWP .
1
i
LWP .
9 M
'1 '
4 #
1( QR
%3
3 L +$
' (
' (
5
2 . /0&
2000
# "
2 . /0& !
!
.
$ , . '1 . > &# + 2000 +4 4
# ) '1 ) * + Fiber '# -1 O # 2( I ($
.
:>
+2; e
' (
' ('
.
2 : '; < .
' C 4 1( QR
1
'"
I 9 'M L ( A
. 0
.$
0 #
d H(
clone ()
G 1 ( ( +$
(task)
', j4 6 ; '1
< C * 4( # 9
+ $,
! "
!
' ( '1 U
1
F ($
' ($
.$
) ', j4 'M L k clone () H + U
.$
' ?5 @
'1 #+ 4 (
6
3 !
l
1 m( :$
. #
$
' ( 4 H ($ 6
.Runnable D 4 +
>
JVM D
4
.
2( I 4$ '1
$ 4 Thread
4H
' (
$J
6
2V
G '1
8 =7 =6 =5 =4 = 3 = 2 = 1
:8 G < ( 1($ !#
U
F :6 1
; C
+ ' # 1 6 1+
( ($ ( G < G #
C++ :
.
G < J
4
.
<# +
<#
$0 #
5 !
! ($ r L ( 7 1
* ( $ ( $ '1
< # 6$ $ > $ + =
< 6$ $ > $ + =
J
J
G <
J
& ($ r L ( 8
9 0 #!
* ( ($ +4( ' + < 9
* ( ($ +4( ' + B 1 9
7