Commit Graph

25 Commits

Author SHA1 Message Date
Oliver Kowalke
310f3ce2f2 move sched_algorithm to algo::algorithm
- new namesapce algo
- shared_round_robin with shared ready queue
2016-05-13 20:14:48 +02:00
Oliver Kowalke
57267ec957 remove support for fiber interruption 2016-04-19 18:16:31 +02:00
Nat Goodspeed
87551c5419 Snapshot of ongoing pass through Fiber documentation.
Highlight predicate condition_variable::wait() method in condition_variable
front matter.

Rewrite the explanation of wait()'s Precondition.

Add a condition_variables subsection about no spurious condition_variable
wakeups. Remove "or spuriously" from wakeup conditions in wait*() methods.
First pass through "spurious wakeup" section in Rationale.

First pass through migration.qbk. Use lock_t throughout work_sharing.cpp,
instead of lock_t, lock_count and explicit std::unique_lock<std::mutex>
declarations. Unify treatment of main and dispatcher fibers.

Clarify thread-safety requirements on sched_algorithm::notify() and
suspend_until().

Clarify disable_interruption when rethrowing fiber_interrupted.

Consolidate future<T>::get(): returns T whether T is R, R& or void.

Mention nesting of disable_interruption (which matters) versus nesting of
restore_interruption (which doesn't). Mention that a disable_interruption
constructed within the scope of another disable_interruption is a no-op, both
itself and when passed to restore_interruption.

When packaged_task::operator()() stores a value or an exception, state "as if"
by promise::set_value() or set_exception(): the shared state is set ready.
Similarly for ~packaged_task() and ~promise() setting broken_promise.

Sprinkle links to the Allocator concept, std::allocator and
std::allocator_arg_t where referenced. Similarly for StackAllocator.

Add more cross-reference links where Fiber classes and methods are mentioned.
Also things like std::unique_lock and std::mutex.

Clarify error condition for value_pop() when channel is close()d.

Since fiber_specific_ptr::release() does not invoke cleanup, it should not
throw an exception raised during cleanup.
2016-02-11 11:27:26 -05:00
Nat Goodspeed
f42fdca00f Use same .qbk source for condition_variable and condition_variable_any.
Wrap the full descriptive text for both classes in a QuickBook template
parameterized with class name and appropriate substitutions for the (few)
differences between the two classes.
2016-02-08 19:44:54 -05:00
Nat Goodspeed
3b9e9a3a56 Snapshot of documentation update for 2016 review.
Note effect of BOOST_USE_SEGMENTED_STACKS if StackAllocator is not explicitly
passed.

Introduce function_heading_for QuickBook template to allow separate
descriptions of swap(fiber), swap(packaged_task) and swap(promise).

Document async() using C++14 std::result_of_t and std::decay_t, aligning with
std::async() documentation.

Rework when_any / when_all examples to use unbounded_channel throughout, since
we always close() the channel after the first value anyway. bounded_channel
doesn't really add much value here.

Make wait_first_outcome_impl() infer its channel pointer type. That way we can
reuse that function instead of coding a separate wait_all_until_error_impl(),
which differs only in using the nchannel facade instead of directly pushing to
unbounded_channel.

Explain use of std::bind() to bind a lambda.

Use a more nuanced discussion of promise lifetime in write_ec() example
function.

Use condition_variable::wait(lock, predicate) in a couple places in
work_sharing.cpp example.
2016-02-06 23:17:04 -05:00
Oliver Kowalke
d541e88a4b update documentation 2015-12-29 15:04:13 +01:00
Nat Goodspeed
d653cbdcc6 Finish proofreading pass.
Add a note to the condition_variable::wait_for(..., pred) overload.

fiber_specific_ptr::reset() has no default argument.

Remove mention of launch policy deferred, since no API accepts a launch
policy argument.

Copy construction or copy assignment of a shared_future leaves other.valid()
unchanged. It won't be 'true' unless it was 'true' before.

Mention that [shared_]future::get_exception_ptr() does not invalidate.

Note that 'blocks' and 'suspends' are used interchangeably.

Add some cross-references; add link to std::allocator_arg_t. Clarify the
cross-reference to the paragraph describing BOOST_FIBERS_NO_ATOMICS.

Reformat some overly-long source lines.
2015-09-03 09:16:09 -04:00
Oliver Kowalke
6a1230f02f fix formating in documentation 2015-08-31 21:32:12 +02:00
Nat Goodspeed
8e21537c3e Recommend std::unique_lock instead of std::lock_guard for mutex.
The condition_variable examples spoke about std::lock_guard. But this doesn't
work in practice, as lock_guard has no unlock() method. Use unique_lock
instead, as test_condition.cpp does.
2015-08-25 12:56:53 -04:00
Nat Goodspeed
a4de0bb7a5 More documentation.
Add note explaining why synchronization objects can neither be moved nor
copied.

Introduce line breaks for some code lines that get broken strangely by doc
toolchain.

Eliminate reference to mutex::scoped_lock.
2015-07-20 09:40:01 -04:00
Oliver Kowalke
3b9382f8df update docu 2015-02-14 11:11:11 +01:00
Oliver Kowalke
2f19be6d67 use C++11 2014-12-27 19:07:42 +01:00
Oliver Kowalke
244c539a2e Add some explanatory material in scheduling.qbk about coding your own
scheduler and setting it with set_scheduling_algorithm(). Document
sched_algorithm interface class.

Fix the example in condition_variables.qbk to explicitly unlock 'lk'
before
calling process_data().
2014-09-22 19:11:22 +02:00
Oliver Kowalke
32d4a056d0 update documentation 2014-08-20 17:37:47 +02:00
Oliver Kowalke
909c8ed3fc some smalle fixes in documentation 2013-12-06 08:52:22 +01:00
Nat Goodspeed
e436bc991d Add class_heading, member_heading et al. QuickBook templates and use for cross-referencing. 2013-11-08 18:30:11 -05:00
Nat Goodspeed
2d79ce67a0 Clarify condition_variable vs. condition_variable_any.
Make condition_variable::wait_until() and wait_for() consistently use 'lk' instead of 'lt' because explanations only describe 'lk'.
Explain condition_variable::wait(), wait_until() and wait_for() Precondition.
Distinguish values returned by wait_until(), wait_for() overloads with and without predicates.
Update request for section concerning algorithm, set_scheduling_algorithm(), round_robin and round_robin_ws.
Clarify lifespan implications of fiber_group::add_fiber(). Explain requirement for a heap fiber object.
Experiment with cross-reference links to other Boost libraries.
2013-10-31 11:19:22 -04:00
Oliver Kowalke
f5d9d6536b docuemntation 2013-10-28 14:54:00 +01:00
Oliver Kowalke
676b9616d6 documentation update (pass #3) 2013-10-26 10:18:35 +02:00
Oliver Kowalke
4f60f804ff docuemtnation update 2013-10-13 11:01:38 +02:00
Oliver Kowalke
2d005f743e docu 2013-09-26 19:26:18 +02:00
Oliver Kowalke
13e52fdb23 docu 2013-09-16 17:33:15 +02:00
Oliver Kowalke
327104ffe3 dou 2013-09-15 19:38:29 +02:00
Oliver Kowalke
5e59b45c8d documentation 2013-09-13 17:38:36 +02:00
Oliver Kowalke
81e62e8962 changed directory structure as required by modularized-boost 2012-12-09 15:22:59 +01:00