blob: 5db7e617c2c6a0d05c72ac5e8847a8fbcd383dcd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
---
version: tip
layout: manpage_v2
title: nng_mtx_lock(3supp)
---
<h1>nng_mtx_lock(3supp)</h1>
<div class="sect1">
<h2 id="_name">NAME</h2>
<div class="sectionbody">
<div class="paragraph">
<p>nng_mtx_lock - lock mutex</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="c"><span></span><span class="tok-cp">#include</span><span class="tok-w"> </span><span class="tok-cpf"><nng/nng.h></span>
<span class="tok-cp">#include</span><span class="tok-w"> </span><span class="tok-cpf"><nng/supplemental/util/platform.h></span>
<span class="tok-kt">void</span><span class="tok-w"> </span><span class="tok-nf">nng_mtx_lock</span><span class="tok-p">(</span><span class="tok-n">nng_mtx</span><span class="tok-w"> </span><span class="tok-o">*</span><span class="tok-n">mtx</span><span class="tok-p">);</span></code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The <code>nng_mtx_lock()</code> acquires exclusive ownership of the mutex <em>mtx</em>.
If the lock is already owned, this function will wait until the current
owner releases it with <a href="nng_mtx_unlock.3supp.html"><code>nng_mtx_unlock()</code></a>.</p>
</div>
<div class="paragraph">
<p>If multiple threads are waiting for the lock, the order of acquisition
is not specified.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
A mutex can <em>only</em> be unlocked by the thread that locked it.
</td>
</tr>
</table>
</div>
<div class="admonitionblock important">
<table>
<tr>
<td class="icon">
<i class="fa icon-important" title="Important"></i>
</td>
<td class="content">
Mutex locks are <em>not</em> recursive; attempts to reacquire the
same mutex may result in deadlock or aborting the current program.
It is a programming error for the owner of a mutex to attempt to
reacquire it.
</td>
</tr>
</table>
</div>
<div class="sidebarblock">
<div class="content">
<div class="paragraph">
<p><em>NNG</em> offers neither a non-blocking variant that can fail,
nor recursive mutexes.
This is by design, as <em>NNG</em> itself does not use such things,
and most often the need for them is the result of poor design.
If such capabilities are needed, they may be synthesized fairly
easily from mutexes and condition variables.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_return_values">RETURN VALUES</h2>
<div class="sectionbody">
<div class="paragraph">
<p>None.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_errors">ERRORS</h2>
<div class="sectionbody">
<div class="paragraph">
<p>None.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph text-left">
<p><a href="nng_cv_alloc.3supp.html">nng_cv_alloc(3supp)</a>,
<a href="nng_mtx_alloc.3supp.html">nng_mtx_alloc(3supp)</a>,
<a href="nng_mtx_unlock.3supp.html">nng_mtx_unlock(3supp)</a>,
<a href="nng.7.html">nng(7)</a></p>
</div>
</div>
</div>
|