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>
		
			
				
	
	
		
			112 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			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
 | |
| に追加されました。
 |