Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(341)

Side by Side Diff: gcc/libstdc++-v3/doc/html/manual/ext_concurrency.html

Issue 3050029: [gcc] GCC 4.5.0=>4.5.1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/nacl-toolchain.git
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or g/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 40. Concurrency</title><met a name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywo rds" content="&#10; ISO C++&#10; , &#10; library&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentat ion" /><link rel="up" href="extensions.html" title="Part XII.  Extensions" /><li nk rel="prev" href="ext_demangling.html" title="Chapter 39. Demangling" /><link rel="next" href="bk01pt12ch40s02.html" title="Implementation" /></head><body><di v class="navheader"><table width="100%" summary="Navigation header"><tr><th cols pan="3" align="center">Chapter 40. Concurrency</th></tr><tr><td width="20%" alig n="left"><a accesskey="p" href="ext_demangling.html">Prev</a> </td><th width="60 %" align="center">Part XII. 
4 Extensions
5
6 </th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch40s02.html" >Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang=" en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.concurr ency"></a>Chapter 40. Concurrency</h2></div></div></div><div class="toc"><p><b>T able of Contents</b></p><dl><dt><span class="sect1"><a href="ext_concurrency.htm l#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class=" sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.threads">Inte rface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="ext_c oncurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Funct ions</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch40s02.h tml">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01 pt12ch40s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Ato mic Functions</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch40s02.ht ml#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></ dd><dt><span class="sect1"><a href="bk01pt12ch40s03.html">Use</a></span></dt></d l></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div>< div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.design"> </a>Design</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.des ign.threads"></a>Interface to Locks and Mutexes</h3></div></div></div><p>The fil e &lt;ext/concurrence.h&gt; contains all the higher-level
7 constructs for playing with threads. In contrast to the atomics layer,
8 the concurrence layer consists largely of types. All types are defined within <c ode class="code">namespace __gnu_cxx</code>.
9 </p><p>
10 These types can be used in a portable manner, regardless of the
11 specific environment. They are carefully designed to provide optimum
12 efficiency and speed, abstracting out underlying thread calls and
13 accesses when compiling for single-threaded situations (even on hosts
14 that support multiple threads.)
15 </p><p>The enumerated type <code class="code">_Lock_policy</code> details the se t of
16 available locking
17 policies: <code class="code">_S_single</code>, <code class="code">_S_mutex</code >,
18 and <code class="code">_S_atomic</code>.
19 </p><div class="itemizedlist"><ul type="disc"><li><p><code class="code">_S_singl e</code></p><p>Indicates single-threaded code that does not need locking.
20 </p></li><li><p><code class="code">_S_mutex</code></p><p>Indicates multi-threade d code using thread-layer abstractions.
21 </p></li><li><p><code class="code">_S_atomic</code></p><p>Indicates multi-thread ed code using atomic operations.
22 </p></li></ul></div><p>The compile-time constant <code class="code">__default_lo ck_policy</code> is set
23 to one of the three values above, depending on characteristics of the
24 host environment and the current compilation flags.
25 </p><p>Two more datatypes make up the rest of the
26 interface: <code class="code">__mutex</code>, and <code class="code">__scoped_lo ck</code>.
27 </p><p>
28 </p><p>The scoped lock idiom is well-discussed within the C++
29 community. This version takes a <code class="code">__mutex</code> reference, and
30 locks it during construction of <code class="code">__scoped_locke</code> and
31 unlocks it during destruction. This is an efficient way of locking
32 critical sections, while retaining exception-safety.
33 </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div ><div><h3 class="title"><a id="manual.ext.concurrency.design.atomics"></a>Interf ace to Atomic Functions</h3></div></div></div><p>
34 Two functions and one type form the base of atomic support.
35 </p><p>The type <code class="code">_Atomic_word</code> is a signed integral type
36 supporting atomic operations.
37 </p><p>
38 The two functions functions are:
39 </p><pre class="programlisting">
40 _Atomic_word
41 __exchange_and_add_dispatch(volatile _Atomic_word*, int);
42
43 void
44 __atomic_add_dispatch(volatile _Atomic_word*, int);
45 </pre><p>Both of these functions are declared in the header file
46 &lt;ext/atomicity.h&gt;, and are in <code class="code">namespace __gnu_cxx</code >.
47 </p><div class="itemizedlist"><ul type="disc"><li><p>
48 <code class="code">
49 __exchange_and_add_dispatch
50 </code>
51 </p><p>Adds the second argument's value to the first argument. Returns the old v alue.
52 </p></li><li><p>
53 <code class="code">
54 __atomic_add_dispatch
55 </code>
56 </p><p>Adds the second argument's value to the first argument. Has no return val ue.
57 </p></li></ul></div><p>
58 These functions forward to one of several specialized helper
59 functions, depending on the circumstances. For instance,
60 </p><p>
61 <code class="code">
62 __exchange_and_add_dispatch
63 </code>
64 </p><p>
65 Calls through to either of:
66 </p><div class="itemizedlist"><ul type="disc"><li><p><code class="code">__exchan ge_and_add</code>
67 </p><p>Multi-thread version. Inlined if compiler-generated builtin atomics
68 can be used, otherwise resolved at link time to a non-builtin code
69 sequence.
70 </p></li><li><p><code class="code">__exchange_and_add_single</code>
71 </p><p>Single threaded version. Inlined.</p></li></ul></div><p>However, only <co de class="code">__exchange_and_add_dispatch</code>
72 and <code class="code">__atomic_add_dispatch</code> should be used. These functi ons
73 can be used in a portable manner, regardless of the specific
74 environment. They are carefully designed to provide optimum efficiency
75 and speed, abstracting out atomic accesses when they are not required
76 (even on hosts that support compiler intrinsics for atomic
77 operations.)
78 </p><p>
79 In addition, there are two macros
80 </p><p>
81 <code class="code">
82 _GLIBCXX_READ_MEM_BARRIER
83 </code>
84 </p><p>
85 <code class="code">
86 _GLIBCXX_WRITE_MEM_BARRIER
87 </code>
88 </p><p>
89 Which expand to the appropriate write and read barrier required by the
90 host hardware and operating system.
91 </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary=" Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_d emangling.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" hr ef="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch40s02.html">Next</a></td></tr><tr><td width="40%" align="left" v align="top">Chapter 39. Demangling </td><td width="20%" align="center"><a access key="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign=" top"> Implementation</td></tr></table></div></body></html>
OLDNEW
« no previous file with comments | « gcc/libstdc++-v3/doc/html/manual/ext_allocators.html ('k') | gcc/libstdc++-v3/doc/html/manual/ext_demangling.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698