Commit Graph

12 Commits

Author SHA1 Message Date
Oliver Kowalke
03e11d6538 spinlocks refactored
- use cpu_relax() to delay (using pause and equivalent mnemonic)
- exponential backoff if lock could no be acquired
- ttas, adaptive ttas
2016-11-03 11:05:05 +01:00
Oliver Kowalke
968c32c842 replace context::migrate() by context::attach()/context::detach() 2016-05-02 18:56:17 +02:00
Nat Goodspeed
b1fe17d264 Make boost::asio::io_service a link in 'support for Boost.Asio'. 2016-04-30 10:10:32 -04:00
Nat Goodspeed
de4b03cb21 Tweak new wording in Rationale section.
Add a link to the section "No Spurious Wakeups" in the condition_variable
section.

Make a pass over "migrating fibers between threads," adding a link to the
whole new section on that same topic.
2016-02-15 20:31:52 -05: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
877baa7c8b Use ["text] template to replace "quotes" with curly double quotes. 2016-02-09 20:19:51 -05:00
Oliver Kowalke
d541e88a4b update documentation 2015-12-29 15:04:13 +01:00
Oliver Kowalke
ab2d0ae52e documentation updated 2015-12-04 18:26:49 +01:00
Nat Goodspeed
f3d80ef589 Update some remarks about Asio; add cross-references. 2015-08-31 20:11:05 -04:00
Nat Goodspeed
a2b18c51de Fix cross-references to other Boost libraries, per Paul Bristow.
As Paul points out, links of the form [@boost:/libs/something/index.html] (as
recommended by
http://www.boost.org/doc/libs/release/doc/html/quickbook/syntax/phrase.html#quickbook.syntax.phrase.links)
do not work when generating PDF, or even when locally generating just one
library's HTML documentation. He suggests linking explicitly to the relevant
boost.org URL. This is much more satisfying as the link can be tested.
2015-08-17 08:26:07 -04:00
Nat Goodspeed
666ada61ec Review rationale.qbk. 2015-08-14 11:21:42 -04:00
Nat Goodspeed
e08611555b Rename rational.qbk to rationale.qbk. 2015-08-14 11:10:44 -04:00