1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
.\" This page is made available under the MIT license.
.\"
.\" This manpage has been automatically generated by docbook2man
.\" from a DocBook document. This tool can be found at:
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
.\"
.\" Japanese Version Copyright(C) 2003 Suzuki Takashi
.\" all rights reserved.
.\" Translated Fri Oct 24 10:37:10 JST 2003
.\" by Suzuki Takashi.
.\"
.\"WORD: contend 礹
.\"WORD: sleep Ԥ
.\"WORD: wake
.\"WORD: wake up
.\"
.TH FUTEX 7 2002-12-31 "Linux" "Linux Programmer's Manual"
.SH ̾
futex - ®桼֥å
.SH
.nf
.B #include <linux/futex.h>
.fi
.SH
.PP
Linux ͥϡ桼֤ǹ®ʥå䥻ޥեѤ뤿
ŪǤȤ futex ("Fast Userspace muTexes"; ®桼 mutex)
Ƥ롣
futex ˴ŪʤΤǡ POSIX mutex Τ褦ʹ٤ʥåγǰ
ۤΤΩäƤ롣
.PP
ΥڡϤ٤Ƥ߷Ҥ褦ˤϤʤäƤ餺
ץꥱ饤֥γȯ˴ط뤳Ȥ˸¤äƤ롣
ºݤˤϥץޤ¿ľܤ futex ʤ
futex ˴Ťƹۤ줿ƥ饤֥ (㤨 NPTL å)
¸뤳Ȥˤʤ
.PP
futex ϰۤʤץ֤Ƕͭ뤳ȤΤǤҤǼ̤롣
ΰۤʤץǤϡƱɥ쥹ͿƤɬפϤʤ
λѤǤ futex ΥޥƥϥޥեƱǤ롣
futex Բʬ (atomically) ȤǥȤǤ
ǡץͤˤʤΤԤĤȤǤ롣
.PP
futex ϡ礬ʤˤϴ˥桼֤ǹԤʤ롣
ͥ϶礬äۤ˴ͿǤ롣
ɼ߷פǤ϶礬ʤ褦Ϥ뤬
futex ⶥ֤˴ؤƺŬƤ롣
.PP
λѤǤϡ futex Բʬʥ֥̿ǤΤ
饤Ȥ·ä int ѿǤ롣
ʣΥץϤ int ѿ
.BR mmap (2)
Ѥ뤫
ͭꥻȤ𤹤뤫
֤ͭ (ξ硢
ץꥱϰŪ˥ޥåɤǤȸƤФ) ˡǶͭ롣
.SS "ޥƥ"
.PP
futex Ϥ٤ƥ桼֤Ϥޤ뤬ɬפ˱
.BR futex (2)
ƥॳѤƥͥ̿롣
.PP
futex "up" ˤϡ
ۥ CPU Ф int ѿԲʬǥȤ褦ʡ
Ŭڤʥ֥̿¹Ԥ롣
Τȡºݤ 0 1 Ѳɤå
ѲƤԤץ (waiter) ϤʤȤȤǤꡢϴλ롣
϶ΤʤǤꡢ®Ǥ褯ϤǤ롣
.PP
礬硢ԲʬΥȤǥ \-1 (ޤ¾ο)
Ѳ롣줬ФȡԤץȤȤǤ롣
桼֤Ǥϥ 1 ꤷ
.B FUTEX_WAKE
ѤƥͥԤץ wake () 褦ؼ롣
.PP
futex γԤġʤ futex "down" ˤȿФԤʤ
ԲʬǥǥȤ 0 Ѳɤ
å롣ѲƤϴλ futex ϶礷ƤʤȤȤǤ롣
0 ˤʤʤä硢ץϥ \-1 ꤷ
¾Υץ futex up ΤԤĤ褦ͥᤷʤФʤʤ
.B FUTEX_WAIT
ԤʤȤǼ¸롣
.PP
.BR futex (2)
ƥॳˤϡάǽʰȤƥॢȤϤȤǤ
ͥϤ futex up Τɤ줯餤δԤĤ٤
ꤹ뤳ȤǤ롣ξ硢ޥƥϤäʣˤʤ뤿ᡢ
ܺ٤ʾˤϥץޤ
.BR futex (2)
Ȥ뤳ȡ
ƱڡƱ futex ԤˤĤƤƤ롣
.SH С
.PP
ǽ futex б Linux 2.5.7 Ȥ߹ޤ줿
嵭ΥޥƥȤϰۤʤ롣
ߤΥޥƥ Linux 2.5.40 ʹߤѲǽǤ롣
.SH
.PP
Ƥӷ֤Ƥ futex ϥɥ桼ưפ˻Ȥ복ǰȤ
տޤ줿ΤǤϤʤ
Ԥϡ֥˴Ƥꡢʲ˵ futex 桼֥饤֥
ɤ߽Ƥ뤳Ȥᤵ롣
.PP
Υޥ˥奢ڡˤ
.BR futex (2)
ץߥƥ֤κǤŪʻˡ
Ƥ롣Ϸ褷ͣλˡǤϤʤ
.\" .SH
.\" .PP
.\" futex Hubertus Franke (IBM Thomas J. Watson Research Center)
.\" Matthew Kirkwood Ingo Molnar (Red Hat)
.\" Rusty Russell (IBM Linux Technology Center) ߷פƤ
.\" Υڡ bert hubert
.SH Ϣ
.BR futex (2)
.PP
.IR "Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux"
(proceedings of the Ottawa Linux Symposium 2002),
futex λ饤֥, futex-*.tar.bz2
<URL:ftp://ftp.kernel.org:/pub/linux/kernel/people/rusty/>.
|