aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man3/pthread_key_create.3
blob: 759bbb7fb3073bee2f238986ac35f9dc705e7d02 (plain) (blame)
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
.\" Copyright (c) 1996 John Birrell <jb@cimlogic.com.au>.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by John Birrell.
.\" 4. Neither the name of the author nor the names of any co-contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" %FreeBSD: src/lib/libc_r/man/pthread_key_create.3,v 1.6.2.5 2001/12/17 10:08:26 ru Exp %
.\"
.\" $FreeBSD$
.Dd April 4, 1996
.Dt PTHREAD_KEY_CREATE 3
.Os
.Sh 名称
.Nm pthread_key_create
.Nd スレッド固有のデータキーの作成
.Sh ライブラリ
.Lb libc_r
.Sh 書式
.In pthread.h
.Ft int
.Fn pthread_key_create "pthread_key_t *key" "void (*destructor)(void *)"
.Sh 解説
.Fn pthread_key_create
関数は、プロセス内の全てのスレッドに可視のスレッド固有のデータキーを
作成します。
.Fn pthread_key_create
によって提供されたキーの値は、スレッド固有のデータの位置を示すために
使用される不透明なオブジェクトです。
別のスレッドによって同じキー値が使用されることが可能ですが、
.Fn pthread_setspecific
によってキーに結びつけられた値はスレッド毎を基準に保守され、
呼び出しているスレッドが生きている間存続します。
.Pp
キーの作成時には、全てのアクティブなスレッド内の新しいキーに、値 NULL が
関連付けられます。
スレッドの作成時には、新しいスレッド内の全ての定義済のキーに、値 NULL が
関連付けられます。
.Pp
任意のデストラクタ関数は、個々のキーの値と関連付けられることができます。
スレッドの終了時に、キー値が NULL でないデストラクタのポインタを持ち、
かつスレッドがキーに関連付けられた NULL でない値を持っている場合には、
現在関連付けられている値を唯一の引数として、指されている関数が呼び出されます。
スレッドの終了時にそのスレッドのための 1 つ以上のデストラクタ関数が
存在する場合には、デストラクタの呼び出しの順序は未規定です。
.Pp
デストラクタに関連付けられた全ての NULL でない値のために、全ての
デストラクタが呼び出された後で、まだ幾つかの関連付けられたデストラクタを
持つ NULL でない値がある場合には、その過程が繰り返されます。
最低でも [PTHREAD_DESTRUCTOR_ITERATIONS] 回のデストラクタの呼び出しの
繰り返しの後で、まだなお幾つかの関連付けられたデストラクタを
持つ NULL でない値がある場合には、実装はデストラクタの呼び出しを中止します。
.Sh 戻り値
問題がない場合は、
.Fn pthread_key_create
関数は、新しく作成されたキーの値を
.Fa key
で指定された場所に格納し、0 を返します。
問題がある場合は、そのエラーを示すためにエラー番号が返されます。
.Sh エラー
.Fn pthread_key_create
は以下の場合に失敗します。
.Bl -tag -width Er
.It Bq Er EAGAIN
別のスレッド固有のデータキーを作成するために必要なリソースがシステムに
不足しています。または、1 つのプロセスごとのキーの総数についての
システムの制限 [PTHREAD_KEYS_MAX] を超過しました。
.It Bq Er ENOMEM
キーを作成するための十分なメモリがありません。
.El
.Sh 関連項目
.Xr pthread_getspecific 3 ,
.Xr pthread_key_delete 3 ,
.Xr pthread_setspecific 3
.Sh 規格
.Fn pthread_key_create
は
.St -p1003.1-96
に適合しています。