doc/ja_JP.eucJP/man/man3/pthread_rwlock_rdlock.3
Kazuo Horikawa cb5d1a9147 Replace jpman project specific RCS keyword with $FreeBSD.
jpman project specific RCS keyword (jpman %Id) is obsolete,
after manual entries are stored in freefall CVS repository.
This old Id is useless and more worse it confuses users and bug reporters.
So, this old Id is removed.

Submitted by:jpman project <man-jp@jp.FreeBSD.org>
2001-05-14 01:10:24 +00:00

112 lines
3.7 KiB
Groff

.\" Copyright (c) 1998 Alex Nash
.\" 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.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
.\"
.\" %Id: pthread_rwlock_rdlock.3,v 1.1 1998/09/07 19:01:43 alex Exp %
.\"
.\" $FreeBSD$
.Dd August 4, 1998
.Dt PTHREAD_RWLOCK_RDLOCK 3
.Os
.Sh 名称
.Nm pthread_rwlock_rdlock ,
.Nm pthread_rwlock_tryrdlock
.Nd 読込み用に読み書きロックを取得
.Sh 書式
.Fd #include <pthread.h>
.Ft int
.Fn pthread_rwlock_rdlock "pthread_rwlock_t *lock"
.Ft int
.Fn pthread_rwlock_tryrdlock "pthread_rwlock_t *lock"
.Sh 解説
.Fn pthread_rwlock_rdlock
関数は、
.Fa lock
が書込み用に設定されておらず、
書込みスレッドがロックでブロックされていない場合、読込みロックを
.Fa lock
で取得します。読込みロックをすぐに取得できない場合、呼び出しスレッドはロック
を取得できるようになるまでブロックされます。
.Pp
.Fn pthread_rwlock_tryrdlock
関数は同じアクションを実行しますが、ロックをすぐに取得できなくても
( 書込み用にロックされているか、書込みスレッドが待機していても )
ブロックされません。
.Pp
1つのスレッドは、複数の読込みロックを同時に取得できます。この場合は
.Fn pthread_rwlock_unlock
をそれぞれのロックに 1 回ずつ呼び出す必要があります。
.Pp
呼び出しスレッドが書込みロックを取得している場合に読込みロックを
取得しようとすると、結果は不定になります。
.Sh システムの注意事項
書込み側の飢餓状態を避けるため、書込み側は読込み側より優先されます。
.Sh 戻り値
問題がない場合、
.Fn pthread_rwlock_rdlock
関数と
.Fn pthread_rwlock_tryrdlock
関数はゼロを戻します。問題がある場合は、そのエラーを示すエラー番号を戻します。
.Sh 関連項目
.Xr pthread_rwlock_init 3 ,
.Xr pthread_rwlock_trywrlock 3 ,
.Xr pthread_rwlock_unlock 3 ,
.Xr pthread_rwlock_wrlock 3
.Sh 規格
.Fn pthread_rwlock_rdlock
関数と
.Fn pthread_rwlock_tryrdlock
関数は、
.St -susv2
.Sh エラー
.Fn pthread_rwlock_tryrdlock
関数は、以下のような場合にエラーとなります。
.Bl -tag -width Er
.It Bq Er EBUSY
書込み側がロックしているかブロックされているため、ロック
を取得できない場合。
.El
.Pp
.Fn pthread_rwlock_rdlock
関数と
.Fn pthread_rwlock_tryrdlock
関数は、
以下のような場合にエラーになる場合があります。
.Bl -tag -width Er
.It Bq Er EAGAIN
.Fa lock
に対する読込みロックの最大数を越えたため、ロックを取得できない場合。
.It Bq Er EDEADLK
現在のスレッドが、書込み用にロックをすでに取得している場合。
.It Bq Er EINVAL
.Fa lock
で指定されている値が正しくない場合。
.It Bq Er ENOMEM
メモリが不足しているため、ロックを初期化できない場合 ( 静的に
初期化されるロックのみに適用 ) 。
.El
.Sh 歴史
.Fn pthread_rwlock_rdlock
関数は、
.Fx 3.0
に追加されました。