|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r58442 - sandbox/fiber/libs/fiber/doc
From: oliver.kowalke_at_[hidden]
Date: 2009-12-17 17:50:59
Author: olli
Date: 2009-12-17 17:50:58 EST (Thu, 17 Dec 2009)
New Revision: 58442
URL: http://svn.boost.org/trac/boost/changeset/58442
Log:
- documentation updated
Text files modified:
sandbox/fiber/libs/fiber/doc/fiber.qbk | 8 ++
sandbox/fiber/libs/fiber/doc/fiber_ref.qbk | 2
sandbox/fiber/libs/fiber/doc/spin_barrier.qbk | 20 +---
sandbox/fiber/libs/fiber/doc/spin_condition_variables.qbk | 12 +-
sandbox/fiber/libs/fiber/doc/spin_event_variables.qbk | 84 ++++++----------------
sandbox/fiber/libs/fiber/doc/spin_fifos.qbk | 148 ++++++++++++++++-----------------------
sandbox/fiber/libs/fiber/doc/spin_mutexes.qbk | 14 +-
sandbox/fiber/libs/fiber/doc/spin_synchronization.qbk | 3
sandbox/fiber/libs/fiber/doc/todo.qbk | 4
9 files changed, 116 insertions(+), 179 deletions(-)
Modified: sandbox/fiber/libs/fiber/doc/fiber.qbk
==============================================================================
--- sandbox/fiber/libs/fiber/doc/fiber.qbk (original)
+++ sandbox/fiber/libs/fiber/doc/fiber.qbk 2009-12-17 17:50:58 EST (Thu, 17 Dec 2009)
@@ -39,6 +39,10 @@
[template interrupt_link[link_text] [link fiber.fiber_management.fiber.interrupt [link_text]]]
[template join_link[link_text] [link fiber.fiber_management.fiber.join [link_text]]]
+[template spin_barrier_link[link_text] [link fiber.spin_synchronization.barriers [link_text]]]
+[template spin_condition_link[link_text] [link fiber.spin_synchronization.conditions [link_text]]]
+[template spin_mutex_link[link_text] [link fiber.spin_synchronization.mutex_types.mutex [link_text]]]
+
[template interr_enabled_link[link_text] [link fiber.fiber_management.this_fiber.interruption_enabled [link_text]]]
[template interr_requested_link[link_text] [link fiber.fiber_management.this_fiber.interruption_requested [link_text]]]
[template interr_point_link[link_text] [link fiber.fiber_management.this_fiber.interruption_point [link_text]]]
@@ -61,6 +65,10 @@
[def __strategy__ [strategy_link ['strategy]]]
[def __round_robin__ [round_robin_link ['round_robin]]]
+[def __spin_barrier__ [spin_barrier_link ['spin-barrier]]]
+[def __spin_condition__ [spin_condition_link ['spin-condition]]]
+[def __spin_mutex__ [spin_mutex_link ['spin-mutex]]]
+
[def __cond_wait__ [cond_wait_link `wait()`]]
[def __interrupt__ [interrupt_link `interrupt()`]]
[def __join__ [join_link `join()`]]
Modified: sandbox/fiber/libs/fiber/doc/fiber_ref.qbk
==============================================================================
--- sandbox/fiber/libs/fiber/doc/fiber_ref.qbk (original)
+++ sandbox/fiber/libs/fiber/doc/fiber_ref.qbk 2009-12-17 17:50:58 EST (Thu, 17 Dec 2009)
@@ -721,7 +721,7 @@
[note If the fiber is not thread-affine (using thread-local-storage) it can be migrated to a scheduler running in
another thread.]
-[warning The current implementation on Windows uses the Win32 Fiber API which does not allow to migrate fibers
+[warning The current implementation for Windows uses the Win32 Fiber API which does not allow to migrate fibers
to other threads.]
Usally __scheduler__ will be invoked until all fibers are scheduled and finished.
Modified: sandbox/fiber/libs/fiber/doc/spin_barrier.qbk
==============================================================================
--- sandbox/fiber/libs/fiber/doc/spin_barrier.qbk (original)
+++ sandbox/fiber/libs/fiber/doc/spin_barrier.qbk 2009-12-17 17:50:58 EST (Thu, 17 Dec 2009)
@@ -12,38 +12,30 @@
fibers reach the barrier they must wait until all `n` fibers have arrived. Once the `n`-th fiber has reached the
barrier, all the waiting fibers can proceed, and the barrier is reset.
-[note __barrier__ is bound to a given __scheduler__ and can only be used by fibers managed by this scheduler.]
+[note __spin_barrier__ is ['not] bound to a __scheduler__ and can be used by fibers managed by different schedulers.]
[section:barrier Class `barrier`]
- #include <boost/fiber/barrier.hpp>
+ #include <boost/fiber/spin/barrier.hpp>
class barrier
{
public:
- template< typename Strategy >
- barrier( scheduler< Strategy > & sched, uint32_t initial);
+ barrier( uint32_t initial);
bool wait();
};
-Instances of __barrier__ are not copyable or movable.
-
-[section:constructor Constructor]
-
- template< typename Strategy >
- barrier( scheduler< Strategy > & sched, uint32_t initial);
+Instances of __spin_barrier__ are not copyable or movable.
+[section:constructor `barrier( uint32_t initial)`]
[variablelist
[[Effects:] [Construct a barrier for `initial` fibers.]]
[[Throws:] [__invalid_argument__ if an error occurs.]]
]
[endsect]
-[section:wait Member function `wait`]
-
- bool wait();
-
+[section:wait `bool wait()`]
[variablelist
[[Effects:] [Block until `initial` fibers have called `wait` on `*this`. When the `initial`-th fiber calls `wait`,
all waiting fibers are unblocked, and the barrier is reset. ]]
Modified: sandbox/fiber/libs/fiber/doc/spin_condition_variables.qbk
==============================================================================
--- sandbox/fiber/libs/fiber/doc/spin_condition_variables.qbk (original)
+++ sandbox/fiber/libs/fiber/doc/spin_condition_variables.qbk 2009-12-17 17:50:58 EST (Thu, 17 Dec 2009)
@@ -5,7 +5,7 @@
http://www.boost.org/LICENSE_1_0.txt).
]
-[section:conditions Condition Variables using spinwait]
+[section:conditions Condition Variables]
[heading Synopsis]
@@ -14,7 +14,7 @@
condition is not true, then the fiber then calls `wait` again to resume waiting. In the simplest case, this
condition is just a boolean variable:
- boost::fibers::spin::condition cond;
+ boost::fibers::condition cond;
boost::fibers::spin::mutex mtx;
bool data_ready;
@@ -46,7 +46,7 @@
retrieve_data();
prepare_data();
{
- boost::lock_guard< boost::fibers::mutex > lk( mtx);
+ boost::lock_guard< boost::fibers::spin::mutex > lk( mtx);
data_ready = true;
}
cond.notify_one();
@@ -55,7 +55,7 @@
Note that the same mutex is locked before the shared data is updated, but that the mutex does not have to be locked
across the call to `notify_one`.
-[note __condition__ is [*not] bound to a __scheduler__ an can be used to synchronize fibers managed by different schedulers.]
+[note __spin_condition__ is ['not] bound to a __scheduler__ and can be used by fibers managed by different schedulers.]
[section:condition Class `condition`]
@@ -70,12 +70,12 @@
void notify_one();
void notify_all();
- void wait( boost::unique_lock< boost::fibers::mutex > & lk);
+ void wait( boost::unique_lock< boost::fibers::spin::mutex > & lk);
template< typename Pred >
void wait( boost::unique_lock< boost::fibers::spin::mutex > & lk, Pred pred);
- template< typename LockType >
+ template< typename LockType >
void wait( LockType & lk);
template< typename LockType, typename Pred >
Modified: sandbox/fiber/libs/fiber/doc/spin_event_variables.qbk
==============================================================================
--- sandbox/fiber/libs/fiber/doc/spin_event_variables.qbk (original)
+++ sandbox/fiber/libs/fiber/doc/spin_event_variables.qbk 2009-12-17 17:50:58 EST (Thu, 17 Dec 2009)
@@ -5,17 +5,17 @@
http://www.boost.org/LICENSE_1_0.txt).
]
-[section:eventvar_ref Event Variables using spinwait]
+[section:eventvar_ref Event Variables]
[heading Synopsis]
__boost_fiber__ provides event variables to facilitate coordination between fibers.
A event-variable has two states `set` (`signaled`) or `reset` (`nonsignaled`).
-[note event-variables using spinwait are [*not] bound to a __scheduler__ an can be used to synchronize fibers
+[note event-variables are ['not] bound to a __scheduler__ and can be used by fibers
managed by different schedulers.]
- boost::fibers::auto_reset_event ev;
+ boost::fibers::spin::auto_reset_event ev;
void process_data();
@@ -44,6 +44,12 @@
[section:auto_reset_event Class `auto_reset_event`]
+[heading Synopsis]
+
+When the ['auto_reset_event] gets signaled, any one fiber will see this particular signal. When a fiber observes
+the signal by waiting on the event, it is automatically transitioned back to non-signaled state. Any fibers can
+subsequently set the event.
+
#include <boost/fiber/spin/auto_reset_event.hpp>
class auto_reset_event : private boost::noncopyable
@@ -60,10 +66,7 @@
bool try_wait();
};
-[section:constructor `auto_reset_event()`]
-
- explicit auto_reset_event( bool isset = false);
-
+[section:constructor `explicit auto_reset_event( bool isset = false)`]
[variablelist
[[Effects:] [Constructs an object of class `auto_reset_event`. If isset is `true`
the variable is set.]]
@@ -72,9 +75,6 @@
[endsect]
[section:destructor `~auto_reset_event()`]
-
- ~auto_reset_event();
-
[variablelist
[[Precondition:] [All fibers waiting on `*this` have been notified by a call to
`set` (though the respective calls to `wait` need not have returned).]]
@@ -84,9 +84,6 @@
[endsect]
[section:set `void set()`]
-
- void set();
-
[variablelist
[[Effects:] [If any fibers are currently __blocked__ waiting on `*this` in a call
to `wait`, unblocks one of those fibers.]]
@@ -95,9 +92,6 @@
[endsect]
[section:wait `void wait()`]
-
- void wait();
-
[variablelist
[[Effects:] [Blocks the current fiber. The fiber will unblock when notified by a call
to `this->set()`. When the fiber is unblocked, the variable is reset before `wait`
@@ -108,9 +102,6 @@
[endsect]
[section:try_wait `bool try_wait()`]
-
- bool try_wait();
-
[variablelist
[[Effects:] [Returns `true` if the event variable is set otherwise `false`.]]
[[Throws:] [Nothing.]]
@@ -122,6 +113,11 @@
[section:manual_reset_event Class `manual_reset_event`]
+[heading Synopsis]
+
+The ['manual_reset_event] remains signaled until it is manually reset. Multiple fibers
+wait on the same event and observe the same signal.
+
#include <boost/fiber/spin/manual_reset_event.hpp>
class manual_reset_event : private boost::noncopyable
@@ -140,10 +136,7 @@
bool try_wait();
};
-[section:constructor `manual_reset_event()`]
-
- explicit manual_reset_event( bool isset = false);
-
+[section:constructor `explicit manual_reset_event( bool isset = false)`]
[variablelist
[[Effects:] [Constructs an object of class `manual_reset_event`. If isset is `true`
the variable is set.]]
@@ -152,9 +145,6 @@
[endsect]
[section:destructor `~manual_reset_event()`]
-
- ~manual_reset_event();
-
[variablelist
[[Precondition:] [All fibers waiting on `*this` have been notified by a call to
`set` (though the respective calls to `wait` need not have returned).]]
@@ -164,9 +154,6 @@
[endsect]
[section:set `void set()`]
-
- void set();
-
[variablelist
[[Effects:] [If any fibers are currently __blocked__ waiting on `*this` in a call
to `wait`, unblocks those fibers. The variable remains signaled until `this->reset()`
@@ -176,9 +163,6 @@
[endsect]
[section:reset `void reset()`]
-
- void reset();
-
[variablelist
[[Effects:] [The event variable gets nonsignaled and fibers calling `this->wait()`
will block.]]
@@ -187,9 +171,6 @@
[endsect]
[section:wait `void wait()`]
-
- void wait();
-
[variablelist
[[Effects:] [Blocks the current fiber. The fiber will unblock when notified by a call
to `this->set()`. When the fiber is unblocked, the variable remains set.]]
@@ -199,9 +180,6 @@
[endsect]
[section:trywait `boo try_wait()`]
-
- bool try_wait();
-
[variablelist
[[Effects:] [Returns `true` if the event variable is set otherwise `false`.]]
[[Throws:] [Nothing.]]
@@ -213,12 +191,17 @@
[section:count_down_event Class `count_down_event`]
+[heading Synopsis]
+
+The ['count_down_event] decrements an internal counter (set in the constructor) and all
+waiting fibers are blocked until the count reaches zero.
+
#include <boost/fiber/spin/count_down_event.hpp>
class count_down_event : private boost::noncopyable
{
public:
- explicit count_down_event( uint32_t);
+ explicit count_down_event( uint32_t initial);
~count_down_event();
@@ -233,10 +216,7 @@
void wait();
};
-[section:constructor `count_down_event( uint32_t)`]
-
- explicit count_down_event( uint32_t initial);
-
+[section:constructor `explicit count_down_event( uint32_t initial)`]
[variablelist
[[Effects:] [Constructs an object of class `count_down_event` with initial value.]]
[[Throws:] [Nothing.]]
@@ -244,9 +224,6 @@
[endsect]
[section:destructor `~count_down_event()`]
-
- ~count_down_event();
-
[variablelist
[[Precondition:] [All fibers waiting on `*this` have been notified by a call to
`set` (though the respective calls to `wait` need not have returned).]]
@@ -256,9 +233,6 @@
[endsect]
[section:initial `uint32_t initial()`]
-
- uint32_t initial();
-
[variablelist
[[Effects:] [Returns the initial value the event variable was initialized with.]]
[[Throws:] [Nothing.]]
@@ -266,9 +240,6 @@
[endsect]
[section:current `uint32_t current()`]
-
- uint32_t current();
-
[variablelist
[[Effects:] [Returns the value the variable currently holds.]]
[[Throws:] [Nothing.]]
@@ -276,9 +247,6 @@
[endsect]
[section:is_set `bool is_set()`]
-
- bool is_set();
-
[variablelist
[[Effects:] [Returns `true` if the varaible has reached zero.]]
[[Throws:] [Nothing.]]
@@ -286,9 +254,6 @@
[endsect]
[section:set `void set()`]
-
- void set();
-
[variablelist
[[Effects:] [Decrements the current count. If the count reaches zero and any fibers are
currently __blocked__ waiting on `*this` in a call to `wait`, unblocks those fibers.
@@ -298,9 +263,6 @@
[endsect]
[section:wait `void wait()`]
-
- void wait();
-
[variablelist
[[Effects:] [Blocks the current fiber. The fiber will unblock when notified by a call
to `this->set()` and the count of the event variable reaches zero. When the fiber is
Modified: sandbox/fiber/libs/fiber/doc/spin_fifos.qbk
==============================================================================
--- sandbox/fiber/libs/fiber/doc/spin_fifos.qbk (original)
+++ sandbox/fiber/libs/fiber/doc/spin_fifos.qbk 2009-12-17 17:50:58 EST (Thu, 17 Dec 2009)
@@ -5,65 +5,63 @@
http://www.boost.org/LICENSE_1_0.txt
]
-[section:fifos (Un)Bounded fifos using spinwait]
+[section:fifos (Un)Bounded fifos]
__boost_fiber__ provides a bounded and a unbounded fifo suitable to synchonize fibers via message passing.
-[note fifos are [*not] bound to a __scheduler__ an can be used to synchronize fibers
+[note fifos are ['not] bound to a __scheduler__ and can only be used by fibers
managed by different schedulers.]
- typedef boost::fibers::unbounded_fifo< int > fifo_t;
+ typedef boost::fibers::spin::unbounded_fifo< int > fifo_t;
- void send( fifo_t fifo)
- {
- for ( int i = 0; i < 5; ++i)
- fifo.put( i);
- fifo.deactivate();
- }
-
- void recv( fifo_t fifo)
- {
- boost::optional< int > value;
- while ( fifo.take( value) )
- { std::cout << "received " << * value << std::endl; }
- }
-
- fifo_t fifo;
- sched.make_fiber( send, fifo);
- sched.make_fiber( recv, fifo);
-
- for (;;)
- {
- while ( sched.run() );
- if ( sched.empty() ) break;
- }
+ void send( fifo_t fifo)
+ {
+ for ( int i = 0; i < 5; ++i)
+ fifo.put( i);
+ fifo.deactivate();
+ }
+
+ void recv( fifo_t fifo)
+ {
+ boost::optional< int > value;
+ while ( fifo.take( value) )
+ { std::cout << "received " << * value << std::endl; }
+ }
+
+ boost::fibers::scheduler<> sched;
+ fifo_t fifo;
+ sched.make_fiber( send, fifo);
+ sched.make_fiber( recv, fifo);
+
+ for (;;)
+ {
+ while ( sched.run() );
+ if ( sched.empty() ) break;
+ }
[section:unbounded_fifo Template `template< typename T > unbounded_fifo`]
- #include <boost/fiber/spin/unbounded_fifo.hpp>
+ #include <boost/fiber/spin/unbounded_fifo.hpp>
- template< typename T >
- class unbounded_fifo : private noncopyable
- {
- public:
- unbounded_fifo();
+ template< typename T >
+ class unbounded_fifo : private noncopyable
+ {
+ public:
+ unbounded_fifo();
- void deactivate();
+ void deactivate();
- bool empty();
+ bool empty();
- void put( T const& t);
+ void put( T const& t);
- bool take( boost::optional< T > & va);
+ bool take( boost::optional< T > & va);
- bool try_take( boost::optional< T > & va);
- };
+ bool try_take( boost::optional< T > & va);
+ };
[section:constructor `unbounded_fifo()`]
-
- unbounded_fifo();
-
[variablelist
[[Effects:] [Constructs an object of class `unbounded_fifo`.]]
[[Throws:] [Nothing.]]
@@ -71,9 +69,6 @@
[endsect]
[section:deactivate `void deactivate()`]
-
- void deactivate();
-
[variablelist
[[Effects:] [Deactivates the fifo. No values can be put after calling `this->deactivate`. Fibers blocked in
`this->take()` will be return.]]
@@ -82,9 +77,6 @@
[endsect]
[section:empty `bool empty()`]
-
- bool empty();
-
[variablelist
[[Effects:] [Returns `true` if the fifo currently contains no data.]]
[[Throws:] [Nothing.]]
@@ -92,9 +84,6 @@
[endsect]
[section:put `void put( T const& t)`]
-
- void put( T const& t);
-
[variablelist
[[Effects:] [Enqueues the value in the fifo and wakes up a fiber waiting for new data available from the
fifo.]]
@@ -103,9 +92,6 @@
[endsect]
[section:take `bool take( boost::optional< T > & va)`]
-
- bool take( boost::optional< T > & va);
-
[variablelist
[[Effects:] [Dequeues a value from the fifo. If no data is available from the fifo the fiber gets suspended until
new data are enqueued (return value `true` and va contains dequeued value) or the fifo gets deactiveted and
@@ -115,9 +101,6 @@
[endsect]
[section:try_take `bool try_take( boost::optional< T > & va)`]
-
- bool try_take( boost::optional< T > & va);
-
[variablelist
[[Effects:] [Dequeues a value from the fifo. If no data is available from the fifo the function returns `false`.
Otherwise it returns `true` and `va` contains the dequed value.]]
@@ -130,41 +113,42 @@
[section:bounded_fifo Template `template< typename T > bounded_fifo`]
- #include <boost/fiber/spin/bounded_fifo.hpp>
+ #include <boost/fiber/spin/bounded_fifo.hpp>
- template< typename T >
- class bounded_fifo : private noncopyable
- {
- public:
- bounded_fifo( std::size_t wm);
-
- bounded_fifo( std::size_t hwm, std::size_t lwm);
-
- void deactivate();
+ template< typename T >
+ class bounded_fifo : private noncopyable
+ {
+ public:
+ bounded_fifo( std::size_t wm);
- bool empty();
+ bounded_fifo( std::size_t hwm, std::size_t lwm);
- void put( T const& t);
+ void deactivate();
- bool take( boost::optional< T > & va);
+ bool empty();
- bool try_take( boost::optional< T > & va);
- };
+ void put( T const& t);
-[section:constructor `bounded_fifo()`]
+ bool take( boost::optional< T > & va);
- bounded_fifo( std::size_t wm);
+ bool try_take( boost::optional< T > & va);
+ };
+[section:constructor `bounded_fifo( std::size_t wm)`]
[variablelist
[[Effects:] [Constructs an object of class `bounded_fifo` which will contain a maximum of `wm` items.]]
[[Throws:] [Nothing.]]
]
[endsect]
-[section:deactivate `void deactivate()`]
-
- void deactivate();
+[section:constructor2 `bounded_fifo( std::size_t hwm, std::size_t lwm)`]
+[variablelist
+[[Effects:] [Constructs an object of class `bounded_fifo` which will contain a maximum of `hwm` items.]]
+[[Throws:] [Nothing.]]
+]
+[endsect]
+[section:deactivate `void deactivate()`]
[variablelist
[[Effects:] [Deactivates the fifo. No values can be put after calling `this->deactivate`. Fibers blocked in
`this->take()` will be return.]]
@@ -173,9 +157,6 @@
[endsect]
[section:empty `bool empty()`]
-
- bool empty();
-
[variablelist
[[Effects:] [Returns `true` if the fifo currently contains no data.]]
[[Throws:] [Nothing.]]
@@ -183,9 +164,6 @@
[endsect]
[section:put `void put( T const& t)`]
-
- void put( T const& t);
-
[variablelist
[[Effects:] [Enqueues the value in the fifo and wakes up a fiber waiting for new data available from the
fifo. If the watermark has reached the fiber putting the value will be supended until at least one item
@@ -195,9 +173,6 @@
[endsect]
[section:take `bool take( boost::optional< T > & va)`]
-
- bool take( boost::optional< T > & va);
-
[variablelist
[[Effects:] [Dequeues a value from the fifo. If no data is available from the fifo the fiber gets suspended until
new data are enqueued (return value `true` and va contains dequeued value) or the fifo gets deactiveted and
@@ -207,9 +182,6 @@
[endsect]
[section:try_take `bool try_take( boost::optional< T > & va)`]
-
- bool try_take( boost::optional< T > & va);
-
[variablelist
[[Effects:] [Dequeues a value from the fifo. If no data is available from the fifo the function returns `false`.
Otherwise it returns `true` and `va` contains the dequed value.]]
Modified: sandbox/fiber/libs/fiber/doc/spin_mutexes.qbk
==============================================================================
--- sandbox/fiber/libs/fiber/doc/spin_mutexes.qbk (original)
+++ sandbox/fiber/libs/fiber/doc/spin_mutexes.qbk 2009-12-17 17:50:58 EST (Thu, 17 Dec 2009)
@@ -5,7 +5,7 @@
http://www.boost.org/LICENSE_1_0.txt).
]
-[section:mutex_types Mutex Types using spinwait]
+[section:mutex_types Mutex Types]
[section:mutex Class `mutex`]
@@ -16,19 +16,19 @@
public:
mutex();
~mutex();
-
+
void lock();
bool try_lock();
void unlock();
- typedef unique_lock<mutex> scoped_lock;
+ typedef unique_lock< mutex > scoped_lock;
};
-__mutex__ implements the __lockable_concept__ to provide an exclusive-ownership mutex. At most one fiber can own the
-lock on a given instance of __mutex__ at any time. Multiple concurrent calls to __lock_ref__, __try_lock_ref__ and
-__unlock_ref__ shall be permitted.
+__spin_mutex__ implements the __lockable_concept__ to provide an exclusive-ownership mutex. At most one fiber can own the
+lock on a given instance of __spin_mutex__ at any time. Multiple concurrent calls to __lock__, __try_lock__ and
+__unlock__ shall be permitted.
-[note __mutex__ is [*not] bound to a __scheduler__ and can be used to synchronize fibers
+[note __spin_mutex__ is ['not] bound to a __scheduler__ and can only be used by fibers
managed by different schedulers.]
[endsect]
Modified: sandbox/fiber/libs/fiber/doc/spin_synchronization.qbk
==============================================================================
--- sandbox/fiber/libs/fiber/doc/spin_synchronization.qbk (original)
+++ sandbox/fiber/libs/fiber/doc/spin_synchronization.qbk 2009-12-17 17:50:58 EST (Thu, 17 Dec 2009)
@@ -6,6 +6,9 @@
]
[section:spin_synchronization Synchronization using spinwait]
+
+Synch. objects using spin-wait ops. reside in namespace `boost::fibers::spin`.
+
[include spin_mutexes.qbk]
[include spin_condition_variables.qbk]
[include spin_barrier.qbk]
Modified: sandbox/fiber/libs/fiber/doc/todo.qbk
==============================================================================
--- sandbox/fiber/libs/fiber/doc/todo.qbk (original)
+++ sandbox/fiber/libs/fiber/doc/todo.qbk 2009-12-17 17:50:58 EST (Thu, 17 Dec 2009)
@@ -11,8 +11,8 @@
* replace thread_specific_ptr by an specialiced implementation for fiber (interusive_ptr)
-* provide an scheduler which deals with priorities
-
* replace implementation of atomic-ops by boost.atomic
+* provide an scheduler which deals with priorities
+
[endsect]
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk