⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pthread_mutex_unlock.html

📁 unix 下的C开发手册,还用详细的例程。
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><html><head><!-- Copyright 1997 The Open Group, All Rights Reserved --><title>pthread_mutex_lock</title></head><body bgcolor=white><center><font size=2>The Single UNIX &reg; Specification, Version 2<br>Copyright &copy; 1997 The Open Group</font></center><hr size=2 noshade><h4><a name = "tag_000_007_1468">&nbsp;</a>NAME</h4><blockquote>pthread_mutex_lock, pthread_mutex_trylock, pthread_mutex_unlock- lock and unlock a mutex</blockquote><h4><a name = "tag_000_007_1469">&nbsp;</a>SYNOPSIS</h4><blockquote><pre><code>#include &lt;<a href="pthread.h.html">pthread.h</a>&gt;int pthread_mutex_lock(pthread_mutex_t *<i>mutex</i>);int pthread_mutex_trylock(pthread_mutex_t *<i>mutex</i>);int pthread_mutex_unlock(pthread_mutex_t *<i>mutex</i>);</code></pre></blockquote><h4><a name = "tag_000_007_1470">&nbsp;</a>DESCRIPTION</h4><blockquote>The mutex object referenced by<i>mutex</i>is locked by calling<i>pthread_mutex_lock()</i>.If the mutex is already locked,the calling thread blocks until the mutex becomes available.This operation returns with the mutex object referenced by<i>mutex</i>in the locked state with the calling thread as its owner.<p>If the mutex type is PTHREAD_MUTEX_NORMAL, deadlock detection is notprovided. Attempting torelock the mutex causes deadlock. If a thread attempts to unlock amutex that it has not locked or a mutexwhich is unlocked, undefined behaviour results.<p>If the mutex type is PTHREAD_MUTEX_ERRORCHECK, thenerror checking is provided.If a thread attempts to relock a mutex that it has alreadylocked, an error will be returned. If a threadattempts to unlock a mutex that it has not locked or a mutex whichis unlocked, an error will be returned.<p>If the mutex type is PTHREAD_MUTEX_RECURSIVE, then the mutex maintainsthe concept of a lock count.When a thread successfully acquires a mutex for thefirst time, the lock count is setto one. Every time a thread relocks this mutex, the lock count isincremented by one. Each time thethread unlocks the mutex, the lock count is decremented by one.When the lock count reaches zero, themutex becomes available for other threads to acquire. If a threadattempts to unlock a mutex that it hasnot locked or a mutex which is unlocked, an error will be returned.<p>If the mutex type is PTHREAD_MUTEX_DEFAULT, attempting to recursivelylock the mutex results inundefined behaviour. Attempting to unlock the mutex if it was notlocked by the calling thread results inundefined behaviour. Attempting to unlock the mutex if it is notlocked results in undefined behaviour.<p>The function<i>pthread_mutex_trylock()</i>is identical to<i>pthread_mutex_lock()</i>except that if the mutex object referenced by<i>mutex</i>is currently locked (by any thread, including thecurrent thread), the call returns immediately.<p>The<i>pthread_mutex_unlock()</i>function releases the mutex object referenced by<i>mutex</i>.The manner in which a mutex is released is dependent upon the mutex'stype attribute.If there are threads blocked on the mutex object referenced by<i>mutex</i> when <i>pthread_mutex_unlock()</i>is called, resulting in the mutexbecoming available, the scheduling policy is used to determinewhich thread shall acquire the mutex. (In the case of PTHREAD_MUTEX_RECURSIVE mutexes, the mutex becomesavailable when the count reaches zero and the calling thread nolonger has any locks on this mutex).<p>If a signal is delivered to a thread waiting for a mutex,upon return from the signal handler the thread resumes waitingfor the mutex as if it was not interrupted.</blockquote><h4><a name = "tag_000_007_1471">&nbsp;</a>RETURN VALUE</h4><blockquote>If successful, the<i>pthread_mutex_lock()</i>and<i>pthread_mutex_unlock()</i>functions return zero.Otherwise, an error number is returned to indicate the error.<p>The function<i>pthread_mutex_trylock()</i>returns zero if a lock on the mutex object referenced by<i>mutex</i>is acquired.Otherwise, an error number is returned to indicate the error.</blockquote><h4><a name = "tag_000_007_1472">&nbsp;</a>ERRORS</h4><blockquote>The <i>pthread_mutex_lock()</i>and<i>pthread_mutex_trylock()</i>functions will fail if:<dl compact><dt>[EINVAL]<dd>The<i>mutex</i>was created with the protocol attribute having the valuePTHREAD_PRIO_PROTECTand the calling thread's priority is higherthan the mutex's current priority ceiling.</dl><p>The<i>pthread_mutex_trylock()</i>function will fail if:<dl compact><dt>[EBUSY]<dd>The<i>mutex</i>could not be acquired because it was already locked.</dl><p>The<i>pthread_mutex_lock()</i>,<i>pthread_mutex_trylock()</i>and<i>pthread_mutex_unlock()</i>functions may fail if:<dl compact><dt>[EINVAL]<dd>The value specified by<i>mutex</i>does not refer to an initialised mutex object.<dt>[EAGAIN]<dd>The mutex could not be acquired because the maximumnumber of recursive locks for <i>mutex</i> has been exceeded.</dl><p>The<i>pthread_mutex_lock()</i>function may fail if:<dl compact><dt>[EDEADLK]<dd>The current thread already owns the mutex.</dl><p>The<i>pthread_mutex_unlock()</i>function may fail if:<dl compact><dt>[EPERM]<dd>The current thread does not own the mutex.</dl><p>These functions will not return an error code of [EINTR].</blockquote><h4><a name = "tag_000_007_1473">&nbsp;</a>EXAMPLES</h4><blockquote>None.</blockquote><h4><a name = "tag_000_007_1474">&nbsp;</a>APPLICATION USAGE</h4><blockquote>None.</blockquote><h4><a name = "tag_000_007_1475">&nbsp;</a>FUTURE DIRECTIONS</h4><blockquote>None.</blockquote><h4><a name = "tag_000_007_1476">&nbsp;</a>SEE ALSO</h4><blockquote><i><a href="pthread_mutex_init.html">pthread_mutex_init()</a></i>,<i><a href="pthread_mutex_destroy.html">pthread_mutex_destroy()</a></i>,<i><a href="pthread.h.html">&lt;pthread.h&gt;</a></i>.</blockquote><h4>DERIVATION</h4><blockquote>Derived from the POSIX Threads Extension (1003.1c-1995)</blockquote><hr size=2 noshade><center><font size=2>UNIX &reg; is a registered Trademark of The Open Group.<br>Copyright &copy; 1997 The Open Group<br> [ <a href="../index.html">Main Index</a> | <a href="../xshix.html">XSH</a> | <a href="../xcuix.html">XCU</a> | <a href="../xbdix.html">XBD</a> | <a href="../cursesix.html">XCURSES</a> | <a href="../xnsix.html">XNS</a> ]</font></center><hr size=2 noshade></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -