PTHREAD_RWLOCK_TRYWRLOCK(3)POSIX Programmer's ManualPTHREAD_RWLOCK_TRYWRLOCK(3)



PPRROOLLOOGG
       This manual page is part of the POSIX Programmer's Manual.  The OS
       implementation of this interface may differ (consult the corresponding
       OS manual page for details of OS behavior), or the interface may not be
       implemented on OS.

NNAAMMEE
       pthread_rwlock_trywrlock, pthread_rwlock_wrlock -- lock a read-write
       lock object for writing

SSYYNNOOPPSSIISS
       #include <pthread.h>

       int pthread_rwlock_trywrlock(pthread_rwlock_t *_r_w_l_o_c_k);
       int pthread_rwlock_wrlock(pthread_rwlock_t *_r_w_l_o_c_k);

DDEESSCCRRIIPPTTIIOONN
       The _p_t_h_r_e_a_d___r_w_l_o_c_k___t_r_y_w_r_l_o_c_k() function shall apply a write lock like
       the _p_t_h_r_e_a_d___r_w_l_o_c_k___w_r_l_o_c_k() function, with the exception that the
       function shall fail if any thread currently holds _r_w_l_o_c_k (for reading
       or writing).

       The _p_t_h_r_e_a_d___r_w_l_o_c_k___w_r_l_o_c_k() function shall apply a write lock to the
       read-write lock referenced by _r_w_l_o_c_k.  The calling thread shall acquire
       the write lock if no thread (reader or writer) holds the read-write
       lock _r_w_l_o_c_k.  Otherwise, if another thread holds the read-write lock
       _r_w_l_o_c_k, the calling thread shall block until it can acquire the lock.
       If a deadlock condition occurs or the calling thread already owns the
       read-write lock for writing or reading, the call shall either deadlock
       or return [[EEDDEEAADDLLKK]].

       Results are undefined if any of these functions are called with an
       uninitialized read-write lock.

       If a signal is delivered to a thread waiting for a read-write lock for
       writing, upon return from the signal handler the thread resumes waiting
       for the read-write lock for writing as if it was not interrupted.

RREETTUURRNN VVAALLUUEE
       The _p_t_h_r_e_a_d___r_w_l_o_c_k___t_r_y_w_r_l_o_c_k() function shall return zero if the lock
       for writing on the read-write lock object referenced by _r_w_l_o_c_k is
       acquired. Otherwise, an error number shall be returned to indicate the
       error.

       If successful, the _p_t_h_r_e_a_d___r_w_l_o_c_k___w_r_l_o_c_k() function shall return zero;
       otherwise, an error number shall be returned to indicate the error.

EERRRROORRSS
       The _p_t_h_r_e_a_d___r_w_l_o_c_k___t_r_y_w_r_l_o_c_k() function shall fail if:

       EEBBUUSSYY  The read-write lock could not be acquired for writing because it
              was already locked for reading or writing.

       The _p_t_h_r_e_a_d___r_w_l_o_c_k___w_r_l_o_c_k() function may fail if:

       EEDDEEAADDLLKK
              A deadlock condition was detected or the current thread already
              owns the read-write lock for writing or reading.

       These functions shall not return an error code of [[EEIINNTTRR]].

       _T_h_e _f_o_l_l_o_w_i_n_g _s_e_c_t_i_o_n_s _a_r_e _i_n_f_o_r_m_a_t_i_v_e_.

EEXXAAMMPPLLEESS
       None.

AAPPPPLLIICCAATTIIOONN UUSSAAGGEE
       Applications using these functions may be subject to priority
       inversion, as discussed in the Base Definitions volume of POSIX.1-2017,
       _S_e_c_t_i_o_n _3_._2_9_1, _P_r_i_o_r_i_t_y _I_n_v_e_r_s_i_o_n.

RRAATTIIOONNAALLEE
       If an implementation detects that the value specified by the _r_w_l_o_c_k
       argument to _p_t_h_r_e_a_d___r_w_l_o_c_k___t_r_y_w_r_l_o_c_k() or _p_t_h_r_e_a_d___r_w_l_o_c_k___w_r_l_o_c_k() does
       not refer to an initialized read-write lock object, it is recommended
       that the function should fail and report an [[EEIINNVVAALL]] error.

FFUUTTUURREE DDIIRREECCTTIIOONNSS
       None.

SSEEEE AALLSSOO
       _p_t_h_r_e_a_d___r_w_l_o_c_k___d_e_s_t_r_o_y(), _p_t_h_r_e_a_d___r_w_l_o_c_k___r_d_l_o_c_k(),
       _p_t_h_r_e_a_d___r_w_l_o_c_k___t_i_m_e_d_r_d_l_o_c_k(), _p_t_h_r_e_a_d___r_w_l_o_c_k___t_i_m_e_d_w_r_l_o_c_k(),
       _p_t_h_r_e_a_d___r_w_l_o_c_k___u_n_l_o_c_k()

       The Base Definitions volume of POSIX.1-2017, _S_e_c_t_i_o_n _3_._2_9_1, _P_r_i_o_r_i_t_y
       _I_n_v_e_r_s_i_o_n, _S_e_c_t_i_o_n _4_._1_2, _M_e_m_o_r_y _S_y_n_c_h_r_o_n_i_z_a_t_i_o_n, <<pptthhrreeaadd..hh>>

CCOOPPYYRRIIGGHHTT
       Portions of this text are reprinted and reproduced in electronic form
       from IEEE Std 1003.1-2017, Standard for Information Technology --
       Portable Operating System Interface (POSIX), The Open Group Base
       Specifications Issue 7, 2018 Edition, Copyright (C) 2018 by the
       Institute of Electrical and Electronics Engineers, Inc and The Open
       Group.  In the event of any discrepancy between this version and the
       original IEEE and The Open Group Standard, the original IEEE and The
       Open Group Standard is the referee document. The original Standard can
       be obtained online at http://www.opengroup.org/unix/online.html .

       Any typographical or formatting errors that appear in this page are
       most likely to have been introduced during the conversion of the source
       files to man page format. To report such errors, see
       https://www.kernel.org/doc/man-pages/reporting_bugs.html .



IEEE/The Open Group                  2017          PTHREAD_RWLOCK_TRYWRLOCK(3)
