]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/fiber/doc/html/fiber/fiber_mgmt.html
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / fiber / doc / html / fiber / fiber_mgmt.html
CommitLineData
7c673cae
FG
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4<title>Fiber management</title>
5<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
7<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Fiber">
8<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Fiber">
9<link rel="prev" href="overview.html" title="Overview">
10<link rel="next" href="fiber_mgmt/fiber.html" title="Class fiber">
11</head>
12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13<table cellpadding="2" width="100%"><tr>
14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
15<td align="center"><a href="../../../../../index.html">Home</a></td>
16<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19<td align="center"><a href="../../../../../more/index.htm">More</a></td>
20</tr></table>
21<hr>
22<div class="spirit-nav">
23<a accesskey="p" href="overview.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="fiber_mgmt/fiber.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h2 class="title" style="clear: both">
27<a name="fiber.fiber_mgmt"></a><a class="link" href="fiber_mgmt.html" title="Fiber management">Fiber management</a>
28</h2></div></div></div>
29<div class="toc"><dl>
30<dt><span class="section"><a href="fiber_mgmt/fiber.html">Class
31 <code class="computeroutput"><span class="identifier">fiber</span></code></a></span></dt>
32<dt><span class="section"><a href="fiber_mgmt/id.html">Class fiber::id</a></span></dt>
33<dt><span class="section"><a href="fiber_mgmt/this_fiber.html">Namespace this_fiber</a></span></dt>
34</dl></div>
35<h4>
36<a name="fiber.fiber_mgmt.h0"></a>
37 <span><a name="fiber.fiber_mgmt.synopsis"></a></span><a class="link" href="fiber_mgmt.html#fiber.fiber_mgmt.synopsis">Synopsis</a>
38 </h4>
39<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fiber</span><span class="special">/</span><span class="identifier">all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
40
41<span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
42<span class="keyword">namespace</span> <span class="identifier">fibers</span> <span class="special">{</span>
43
44<span class="keyword">class</span> <span class="identifier">fiber</span><span class="special">;</span>
45<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&lt;(</span> <span class="identifier">fiber</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">fiber</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span>
46<span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span> <span class="identifier">fiber</span> <span class="special">&amp;</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">fiber</span> <span class="special">&amp;</span> <span class="identifier">r</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span>
47
48<span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">SchedAlgo</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">...</span> <span class="identifier">Args</span> <span class="special">&gt;</span>
49<span class="keyword">void</span> <span class="identifier">use_scheduling_algorithm</span><span class="special">(</span> <span class="identifier">Args</span> <span class="special">&amp;&amp;</span> <span class="special">...</span> <span class="identifier">args</span><span class="special">);</span>
50<span class="keyword">bool</span> <span class="identifier">has_ready_fibers</span><span class="special">();</span>
51
52<span class="keyword">namespace</span> <span class="identifier">algo</span> <span class="special">{</span>
53
54<span class="keyword">struct</span> <span class="identifier">algorithm</span><span class="special">;</span>
55<span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">PROPS</span> <span class="special">&gt;</span>
56<span class="keyword">struct</span> <span class="identifier">algorithm_with_properties</span><span class="special">;</span>
57<span class="keyword">class</span> <span class="identifier">round_robin</span><span class="special">;</span>
58<span class="keyword">class</span> <span class="identifier">shared_round_robin</span><span class="special">;</span>
59
60<span class="special">}</span>
61
62<span class="keyword">namespace</span> <span class="identifier">this_fiber</span> <span class="special">{</span>
63
64<span class="identifier">fibers</span><span class="special">::</span><span class="identifier">id</span> <span class="identifier">get_id</span><span class="special">()</span> <span class="keyword">noexcept</span><span class="special">;</span>
65<span class="keyword">void</span> <span class="identifier">yield</span><span class="special">();</span>
66<span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Duration</span> <span class="special">&gt;</span>
67<span class="keyword">void</span> <span class="identifier">sleep_until</span><span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">chrono</span><span class="special">::</span><span class="identifier">time_point</span><span class="special">&lt;</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration</span> <span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">abs_time</span><span class="special">)</span>
68<span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">Rep</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Period</span> <span class="special">&gt;</span>
69<span class="keyword">void</span> <span class="identifier">sleep_for</span><span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">chrono</span><span class="special">::</span><span class="identifier">duration</span><span class="special">&lt;</span> <span class="identifier">Rep</span><span class="special">,</span> <span class="identifier">Period</span> <span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rel_time</span><span class="special">);</span>
70<span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">PROPS</span> <span class="special">&gt;</span>
71<span class="identifier">PROPS</span> <span class="special">&amp;</span> <span class="identifier">properties</span><span class="special">();</span>
72
73<span class="special">}}</span>
74</pre>
75<h4>
76<a name="fiber.fiber_mgmt.h1"></a>
77 <span><a name="fiber.fiber_mgmt.tutorial"></a></span><a class="link" href="fiber_mgmt.html#fiber.fiber_mgmt.tutorial">Tutorial</a>
78 </h4>
79<p>
80 Each <a class="link" href="fiber_mgmt/fiber.html#class_fiber"><code class="computeroutput">fiber</code></a> represents a micro-thread which will be launched and managed
81 cooperatively by a scheduler. Objects of type <a class="link" href="fiber_mgmt/fiber.html#class_fiber"><code class="computeroutput">fiber</code></a> are move-only.
82 </p>
83<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibers</span><span class="special">::</span><span class="identifier">fiber</span> <span class="identifier">f1</span><span class="special">;</span> <span class="comment">// not-a-fiber</span>
84
85<span class="keyword">void</span> <span class="identifier">f</span><span class="special">()</span> <span class="special">{</span>
86 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibers</span><span class="special">::</span><span class="identifier">fiber</span> <span class="identifier">f2</span><span class="special">(</span> <span class="identifier">some_fn</span><span class="special">);</span>
87
88 <span class="identifier">f1</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span> <span class="identifier">f2</span><span class="special">);</span> <span class="comment">// f2 moved to f1</span>
89<span class="special">}</span>
90</pre>
91<h4>
92<a name="fiber.fiber_mgmt.h2"></a>
93 <span><a name="fiber.fiber_mgmt.launching"></a></span><a class="link" href="fiber_mgmt.html#fiber.fiber_mgmt.launching">Launching</a>
94 </h4>
95<p>
96 A new fiber is launched by passing an object of a callable type that can be
97 invoked with no parameters. If the object must not be copied or moved, then
98 <span class="emphasis"><em>std::ref</em></span> can be used to pass in a reference to the function
99 object. In this case, the user must ensure that the referenced object outlives
100 the newly-created fiber.
101 </p>
102<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">callable</span> <span class="special">{</span>
103 <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()();</span>
104<span class="special">};</span>
105
106<span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibers</span><span class="special">::</span><span class="identifier">fiber</span> <span class="identifier">copies_are_safe</span><span class="special">()</span> <span class="special">{</span>
107 <span class="identifier">callable</span> <span class="identifier">x</span><span class="special">;</span>
108 <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibers</span><span class="special">::</span><span class="identifier">fiber</span><span class="special">(</span> <span class="identifier">x</span><span class="special">);</span>
109<span class="special">}</span> <span class="comment">// x is destroyed, but the newly-created fiber has a copy, so this is OK</span>
110
111<span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibers</span><span class="special">::</span><span class="identifier">fiber</span> <span class="identifier">oops</span><span class="special">()</span> <span class="special">{</span>
112 <span class="identifier">callable</span> <span class="identifier">x</span><span class="special">;</span>
113 <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibers</span><span class="special">::</span><span class="identifier">fiber</span><span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">);</span>
114<span class="special">}</span> <span class="comment">// x is destroyed, but the newly-created fiber still has a reference</span>
115 <span class="comment">// this leads to undefined behaviour</span>
116</pre>
117<p>
118 The spawned <a class="link" href="fiber_mgmt/fiber.html#class_fiber"><code class="computeroutput">fiber</code></a> does not immediately start running. It is enqueued
119 in the list of ready-to-run fibers, and will run when the scheduler gets around
120 to it.
121 </p>
122<a name="exceptions"></a><h4>
123<a name="fiber.fiber_mgmt.h3"></a>
124 <span><a name="fiber.fiber_mgmt.exceptions"></a></span><a class="link" href="fiber_mgmt.html#fiber.fiber_mgmt.exceptions">Exceptions</a>
125 </h4>
126<p>
127 An exception escaping from the function or callable object passed to the <a class="link" href="fiber_mgmt/fiber.html#class_fiber"><code class="computeroutput">fiber</code></a>
128constructor
129 calls <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">terminate</span><span class="special">()</span></code>.
130 If you need to know which exception was thrown, use <a class="link" href="synchronization/futures/future.html#class_future"><code class="computeroutput">future&lt;&gt;</code></a> or
131 <a class="link" href="synchronization/futures/packaged_task.html#class_packaged_task"><code class="computeroutput">packaged_task&lt;&gt;</code></a>.
132 </p>
133<h4>
134<a name="fiber.fiber_mgmt.h4"></a>
135 <span><a name="fiber.fiber_mgmt.detaching"></a></span><a class="link" href="fiber_mgmt.html#fiber.fiber_mgmt.detaching">Detaching</a>
136 </h4>
137<p>
138 A <a class="link" href="fiber_mgmt/fiber.html#class_fiber"><code class="computeroutput">fiber</code></a> can be detached by explicitly invoking the <a class="link" href="fiber_mgmt/fiber.html#fiber_detach"><code class="computeroutput">fiber::detach()</code></a> member
139 function. After <a class="link" href="fiber_mgmt/fiber.html#fiber_detach"><code class="computeroutput">fiber::detach()</code></a> is called on a fiber object, that
140 object represents <span class="emphasis"><em>not-a-fiber</em></span>. The fiber object may then
141 safely be destroyed.
142 </p>
143<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibers</span><span class="special">::</span><span class="identifier">fiber</span><span class="special">(</span> <span class="identifier">some_fn</span><span class="special">).</span><span class="identifier">detach</span><span class="special">();</span>
144</pre>
145<p>
146 <span class="bold"><strong>Boost.Fiber</strong></span> provides a number of ways to wait
147 for a running fiber to complete. You can coordinate even with a detached fiber
148 using a <a class="link" href="synchronization/mutex_types.html#class_mutex"><code class="computeroutput">mutex</code></a>, or <a class="link" href="synchronization/conditions.html#class_condition_variable"><code class="computeroutput">condition_variable</code></a>, or
149 any of the other <a class="link" href="synchronization.html#synchronization">synchronization objects</a>
150 provided by the library.
151 </p>
152<p>
153 If a detached fiber is still running when the thread&#8217;s main fiber terminates,
154 the thread will not shut down.
155 </p>
156<h4>
157<a name="fiber.fiber_mgmt.h5"></a>
158 <span><a name="fiber.fiber_mgmt.joining"></a></span><a class="link" href="fiber_mgmt.html#fiber.fiber_mgmt.joining">Joining</a>
159 </h4>
160<p>
161 In order to wait for a fiber to finish, the <a class="link" href="fiber_mgmt/fiber.html#fiber_join"><code class="computeroutput">fiber::join()</code></a> member function
162 of the <a class="link" href="fiber_mgmt/fiber.html#class_fiber"><code class="computeroutput">fiber</code></a> object can be used. <a class="link" href="fiber_mgmt/fiber.html#fiber_join"><code class="computeroutput">fiber::join()</code></a> will block
163 until the <a class="link" href="fiber_mgmt/fiber.html#class_fiber"><code class="computeroutput">fiber</code></a> object has completed.
164 </p>
165<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">some_fn</span><span class="special">()</span> <span class="special">{</span>
166 <span class="special">...</span>
167<span class="special">}</span>
168
169<span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibers</span><span class="special">::</span><span class="identifier">fiber</span> <span class="identifier">f</span><span class="special">(</span> <span class="identifier">some_fn</span><span class="special">);</span>
170<span class="special">...</span>
171<span class="identifier">f</span><span class="special">.</span><span class="identifier">join</span><span class="special">();</span>
172</pre>
173<p>
174 If the fiber has already completed, then <a class="link" href="fiber_mgmt/fiber.html#fiber_join"><code class="computeroutput">fiber::join()</code></a> returns immediately
175 and the joined <a class="link" href="fiber_mgmt/fiber.html#class_fiber"><code class="computeroutput">fiber</code></a> object becomes <span class="emphasis"><em>not-a-fiber</em></span>.
176 </p>
177<h4>
178<a name="fiber.fiber_mgmt.h6"></a>
179 <span><a name="fiber.fiber_mgmt.destruction"></a></span><a class="link" href="fiber_mgmt.html#fiber.fiber_mgmt.destruction">Destruction</a>
180 </h4>
181<p>
182 When a <a class="link" href="fiber_mgmt/fiber.html#class_fiber"><code class="computeroutput">fiber</code></a> object representing a valid execution context (the fiber
183 is <a class="link" href="fiber_mgmt/fiber.html#fiber_joinable"><code class="computeroutput">fiber::joinable()</code></a>) is destroyed, the program terminates. If
184 you intend the fiber to outlive the <a class="link" href="fiber_mgmt/fiber.html#class_fiber"><code class="computeroutput">fiber</code></a> object that launched it,
185 use the <a class="link" href="fiber_mgmt/fiber.html#fiber_detach"><code class="computeroutput">fiber::detach()</code></a> method.
186 </p>
187<pre class="programlisting"><span class="special">{</span>
188 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibers</span><span class="special">::</span><span class="identifier">fiber</span> <span class="identifier">f</span><span class="special">(</span> <span class="identifier">some_fn</span><span class="special">);</span>
189<span class="special">}</span> <span class="comment">// std::terminate() will be called</span>
190
191<span class="special">{</span>
192 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibers</span><span class="special">::</span><span class="identifier">fiber</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">some_fn</span><span class="special">);</span>
193 <span class="identifier">f</span><span class="special">.</span><span class="identifier">detach</span><span class="special">();</span>
194<span class="special">}</span> <span class="comment">// okay, program continues</span>
195</pre>
196<a name="class_fiber_id"></a><h4>
197<a name="fiber.fiber_mgmt.h7"></a>
198 <span><a name="fiber.fiber_mgmt.fiber_ids"></a></span><a class="link" href="fiber_mgmt.html#fiber.fiber_mgmt.fiber_ids">Fiber
199 IDs</a>
200 </h4>
201<p>
202 Objects of class <a class="link" href="fiber_mgmt.html#class_fiber_id"><code class="computeroutput"><span class="identifier">fiber</span><span class="special">::</span><span class="identifier">id</span></code></a> can be
203 used to identify fibers. Each running <a class="link" href="fiber_mgmt/fiber.html#class_fiber"><code class="computeroutput">fiber</code></a> has a unique <a class="link" href="fiber_mgmt.html#class_fiber_id"><code class="computeroutput"><span class="identifier">fiber</span><span class="special">::</span><span class="identifier">id</span></code></a> obtainable
204 from the corresponding <a class="link" href="fiber_mgmt/fiber.html#class_fiber"><code class="computeroutput">fiber</code></a>
205by calling the <a class="link" href="fiber_mgmt/fiber.html#fiber_get_id"><code class="computeroutput">fiber::get_id()</code></a> member
206 function. Objects of class <a class="link" href="fiber_mgmt.html#class_fiber_id"><code class="computeroutput"><span class="identifier">fiber</span><span class="special">::</span><span class="identifier">id</span></code></a> can be
207 copied, and used as keys in associative containers: the full range of comparison
208 operators is provided. They can also be written to an output stream using the
209 stream insertion operator, though the output format is unspecified.
210 </p>
211<p>
212 Each instance of <a class="link" href="fiber_mgmt.html#class_fiber_id"><code class="computeroutput"><span class="identifier">fiber</span><span class="special">::</span><span class="identifier">id</span></code></a> either
213 refers to some fiber, or <span class="emphasis"><em>not-a-fiber</em></span>. Instances that refer
214 to <span class="emphasis"><em>not-a-fiber</em></span> compare equal to each other, but not equal
215 to any instances that refer to an actual fiber. The comparison operators on
216 <a class="link" href="fiber_mgmt.html#class_fiber_id"><code class="computeroutput"><span class="identifier">fiber</span><span class="special">::</span><span class="identifier">id</span></code></a> yield a total order for every non-equal
217 <a class="link" href="fiber_mgmt.html#class_fiber_id"><code class="computeroutput"><span class="identifier">fiber</span><span class="special">::</span><span class="identifier">id</span></code></a>.
218 </p>
219<a name="class_launch"></a><h4>
220<a name="fiber.fiber_mgmt.h8"></a>
221 <span><a name="fiber.fiber_mgmt.enumeration__code__phrase_role__identifier__launch__phrase___code_"></a></span><a class="link" href="fiber_mgmt.html#fiber.fiber_mgmt.enumeration__code__phrase_role__identifier__launch__phrase___code_">Enumeration
222 <code class="computeroutput"><span class="identifier">launch</span></code></a>
223 </h4>
224<p>
225 <code class="computeroutput"><span class="identifier">launch</span></code> specifies whether control
226 passes immediately into a newly-launched fiber.
227 </p>
228<pre class="programlisting"><span class="keyword">enum</span> <span class="keyword">class</span> <span class="identifier">launch</span> <span class="special">{</span>
229 <span class="identifier">dispatch</span><span class="special">,</span>
230 <span class="identifier">post</span>
231<span class="special">};</span>
232</pre>
233<h4>
234<a name="fiber.fiber_mgmt.h9"></a>
235 <span><a name="fiber.fiber_mgmt._code__phrase_role__identifier__dispatch__phrase___code_"></a></span><a class="link" href="fiber_mgmt.html#fiber.fiber_mgmt._code__phrase_role__identifier__dispatch__phrase___code_"><code class="computeroutput"><span class="identifier">dispatch</span></code></a>
236 </h4>
237<div class="variablelist">
238<p class="title"><b></b></p>
239<dl>
240<dt><span class="term">Effects:</span></dt>
241<dd><p>
242 A fiber launched with <code class="computeroutput"><span class="identifier">launch</span>
243 <span class="special">==</span> <span class="identifier">dispatch</span></code>
244 is entered immediately. In other words, launching a fiber with <code class="computeroutput"><span class="identifier">dispatch</span></code> suspends the caller (the previously-running
245 fiber) until the fiber scheduler has a chance to resume it later.
246 </p></dd>
247</dl>
248</div>
249<h4>
250<a name="fiber.fiber_mgmt.h10"></a>
251 <span><a name="fiber.fiber_mgmt._code__phrase_role__identifier__post__phrase___code_"></a></span><a class="link" href="fiber_mgmt.html#fiber.fiber_mgmt._code__phrase_role__identifier__post__phrase___code_"><code class="computeroutput"><span class="identifier">post</span></code></a>
252 </h4>
253<div class="variablelist">
254<p class="title"><b></b></p>
255<dl>
256<dt><span class="term">Effects:</span></dt>
257<dd><p>
258 A fiber launched with <code class="computeroutput"><span class="identifier">launch</span>
259 <span class="special">==</span> <span class="identifier">post</span></code>
260 is passed to the fiber scheduler as ready, but it is not yet entered.
261 The caller (the previously-running fiber) continues executing. The newly-launched
262 fiber will be entered when the fiber scheduler has a chance to resume
263 it later.
264 </p></dd>
265<dt><span class="term">Note:</span></dt>
266<dd><p>
267 If <code class="computeroutput"><span class="identifier">launch</span></code> is not explicitly
268 specified, <code class="computeroutput"><span class="identifier">post</span></code> is the
269 default.
270 </p></dd>
271</dl>
272</div>
273</div>
274<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
275<td align="left"></td>
276<td align="right"><div class="copyright-footer">Copyright &#169; 2013 Oliver Kowalke<p>
277 Distributed under the Boost Software License, Version 1.0. (See accompanying
278 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
279 </p>
280</div></td>
281</tr></table>
282<hr>
283<div class="spirit-nav">
284<a accesskey="p" href="overview.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="fiber_mgmt/fiber.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
285</div>
286</body>
287</html>