Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
PTHREAD_RWLOCK_RDLO... FreeBSD Library Functions Manual	PTHREAD_RWLOCK_RDLO...

NAME
     pthread_rwlock_rdlock, pthread_rwlock_timedrdlock,
     pthread_rwlock_tryrdlock -- acquire a read/write lock for reading

SYNOPSIS
     #include <pthread.h>

     int
     pthread_rwlock_rdlock(pthread_rwlock_t *lock);

     int
     pthread_rwlock_timedrdlock(pthread_rwlock_t *lock,
	 const struct timespec *abstime);

     int
     pthread_rwlock_tryrdlock(pthread_rwlock_t *lock);

DESCRIPTION
     The pthread_rwlock_rdlock() function acquires a read lock on lock pro-
     vided that	lock is	not presently held for writing and no writer threads
     are presently blocked on the lock.	 If the	read lock cannot be immedi-
     ately acquired, the calling thread	blocks until it	can acquire the	lock.

     The pthread_rwlock_timedrdlock() function performs	the same action, but
     will not wait beyond abstime to obtain the	lock before returning.

     The pthread_rwlock_tryrdlock() function performs the same action as
     pthread_rwlock_rdlock(), but does not block if the	lock cannot be immedi-
     ately obtained (i.e., the lock is held for	writing	or there are writers
     waiting).

     A thread may hold multiple	concurrent read	locks.	If so,
     pthread_rwlock_unlock() must be called once for each lock obtained.

     The results of acquiring a	read lock while	the calling thread holds a
     write lock	are undefined.

RETURN VALUES
     If	successful, the	pthread_rwlock_rdlock(), pthread_rwlock_timedrdlock(),
     and pthread_rwlock_tryrdlock() functions will return zero.	 Otherwise an
     error number will be returned to indicate the error.

ERRORS
     The pthread_rwlock_tryrdlock() function will fail if:

     [EBUSY]		The lock could not be acquired because a writer	holds
			the lock or was	blocked	on it.

     The pthread_rwlock_timedrdlock() function will fail if:

     [ETIMEDOUT]	The time specified by abstime was reached before the
			lock could be obtained.

     The pthread_rwlock_rdlock(), pthread_rwlock_timedrdlock(),	and
     pthread_rwlock_tryrdlock()	functions may fail if:

     [EAGAIN]		The lock could not be acquired because the maximum
			number of read locks against lock has been exceeded.

     [EDEADLK]		The current thread already owns	lock for writing.

     [EINVAL]		The value specified by lock is invalid.

     [ENOMEM]		Insufficient memory exists to initialize the lock (ap-
			plies to statically initialized	locks only).

SEE ALSO
     pthread_rwlock_init(3), pthread_rwlock_trywrlock(3),
     pthread_rwlock_unlock(3), pthread_rwlock_wrlock(3)

STANDARDS
     The pthread_rwlock_rdlock(), pthread_rwlock_timedrdlock(),	and
     pthread_rwlock_tryrdlock()	functions are expected to conform to Version 2
     of	the Single UNIX	Specification ("SUSv2").

HISTORY
     The pthread_rwlock_rdlock() function first	appeared in FreeBSD 3.0	and
     OpenBSD 2.5.  The pthread_rwlock_timedrdlock() function first appeared in
     OpenBSD 4.8.

FreeBSD	13.0		       February	13, 2019		  FreeBSD 13.0

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO | STANDARDS | HISTORY

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=pthread_rwlock_rdlock&sektion=3&manpath=OpenBSD+6.9>

home | help