]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.7/doc/html/manual/bk01pt03ch30s03.html
update
[l4.git] / l4 / pkg / libstdc++-v3 / contrib / libstdc++-v3-4.7 / doc / html / manual / bk01pt03ch30s03.html
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Use</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content="&#10;      ISO C++&#10;    , &#10;      library&#10;    "/><meta name="keywords" content="&#10;      ISO C++&#10;    , &#10;      library&#10;    "/><meta name="keywords" content="&#10;      ISO C++&#10;    , &#10;      runtime&#10;    , &#10;      library&#10;    "/><link rel="home" href="../index.html" title="The GNU C++ Library"/><link rel="up" href="ext_concurrency.html" title="Chapter 30. Concurrency"/><link rel="prev" href="bk01pt03ch30s02.html" title="Implementation"/><link rel="next" href="bk01pt04.html" title="Part IV.  Appendices"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Use</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch30s02.html">Prev</a> </td><th width="60%" align="center">Chapter 30. Concurrency</th><td align="right"> <a accesskey="n" href="bk01pt04.html">Next</a></td></tr></table><hr/></div><div class="section" title="Use"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.concurrency.use"/>Use</h2></div></div></div><p>Typical usage of the last two constructs is demonstrated as follows:
4 </p><pre class="programlisting">
5 #include &lt;ext/concurrence.h&gt;
6
7 namespace
8 {
9   __gnu_cxx::__mutex safe_base_mutex;
10 } // anonymous namespace
11
12 namespace other
13 {
14   void
15   foo()
16   {
17     __gnu_cxx::__scoped_lock sentry(safe_base_mutex);
18     for (int i = 0; i &lt; max;  ++i)
19       {
20         _Safe_iterator_base* __old = __iter;
21         __iter = __iter-&lt;_M_next;
22         __old-&lt;_M_detach_single();
23       }
24 }
25 </pre><p>In this sample code, an anonymous namespace is used to keep
26 the <code class="code">__mutex</code> private to the compilation unit,
27 and <code class="code">__scoped_lock</code> is used to guard access to the critical
28 section within the for loop, locking the mutex on creation and freeing
29 the mutex as control moves out of this block.
30 </p><p>Several exception classes are used to keep track of
31 concurrence-related errors. These classes
32 are: <code class="code">__concurrence_lock_error</code>, <code class="code">__concurrence_unlock_error</code>, <code class="code">__concurrence_wait_error</code>,
33 and <code class="code">__concurrence_broadcast_error</code>.
34 </p></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="bk01pt03ch30s02.html">Prev</a> </td><td align="center"><a accesskey="u" href="ext_concurrency.html">Up</a></td><td align="right"> <a accesskey="n" href="bk01pt04.html">Next</a></td></tr><tr><td align="left" valign="top">Implementation </td><td align="center"><a accesskey="h" href="../index.html">Home</a></td><td align="right" valign="top"> Part IV. 
35   Appendices
36 </td></tr></table></div></body></html>