doc/ja_JP.eucJP/man/man3/pthread_key_create.3
Jun Kuriyama fc733ebccd Japanese version of section 3 manual pages based on 3.1-RELEASE.
This section is based on catpages contributed by Mainichi
Communications, Inc.

Translated by:	MYCOM team
Converted by:	Japanese Online Manual Project <man-jp@jp.FreeBSD.ORG>
Submitted by:	Kazuo Horikawa <k-horik@yk.rim.or.jp>
1999-12-09 16:26:08 +00:00

113 lines
4 KiB
Groff

.\" 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.
.\"
.Dd April 4, 1996
.Dt PTHREAD_KEY_CREATE 3
.Os BSD 4
.Sh 名称
.Nm pthread_key_create
.Nd スレッドに固有なデータキーの作成
.Sh 書式
.Fd #include <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
値が関連している場合に、現在関連している値を唯一の引数として、
指されている関数が呼び出されます。スレッドに複数の破壊関数が
存在する場合、スレッドの終了時に破壊関数を呼び出す順序は未規定です。
.Pp
破壊関数が関連づけられたすべての非
NULL
値に対してすべての破壊関数が呼び出された後で、
まだ破壊関数が関連づけられた非
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
スレッドに固有なデータキーの作成に必要なリソースが
システムで不足しているか、プロセスごとのキー総数に関する、
システムに課せられた制限
[PTHREAD_KEYS_MAX]
を越えた場合
.It Bq Er ENOMEM
キーの作成にメモリが不足している場合
.El
.Pp
.Sh 関連項目
.Xr pthread_getspecific 3 ,
.Xr pthread_key_delete 3 ,
.Xr pthread_setspecific 3
.Sh 規格
.Fn pthread_key_create
は、
ISO/IEC 9945-1 ANSI/IEEE
.Pq Dq Tn POSIX
Std 1003.1 Second Edition 1996-07-12
に準拠しています。