Commit Graph

59 Commits

Author SHA1 Message Date
Oliver Kowalke
2b16d5445a documentation for shared_work updated 2019-05-17 10:28:36 +02:00
Oliver Kowalke
2fff971242 fix unsufficent synchronization of work-stealing algorithms 2018-08-21 09:53:37 +02:00
oliver Kowalke
58a4b88fa9 docu: replace set_ready() by schedule()
- in context of #153
2017-11-10 07:52:12 +01:00
Oliver Kowalke
26e929643a documentation: algorithms do not support dynamic threads 2017-06-13 17:51:32 +02:00
Oliver Kowalke
11472ef1b5 documentation update 2017-05-07 08:09:43 +02:00
Oliver Kowalke
e3358bb9ba docu: add some notes to shared_work/work_stealing sched-algos 2017-04-02 21:44:39 +02:00
Nat Goodspeed
f026de1458 Editorial pass through updated performance.qbk.
Also a couple of tweaks to referenced sections in scheduling.qbk.
2016-11-10 07:14:39 -08:00
Oliver Kowalke
290f1ff5ed update documentation
- section performance updated
- subsection tweaking
2016-11-09 08:16:28 +01:00
Oliver Kowalke
fa071c27cf use SPMC (chase-lev algoritm) for ready-queue (work stealing) 2016-11-03 11:05:51 +01:00
Oliver Kowalke
1f81bc2a5f Merge branch 'exp' into develop 2016-05-22 07:20:22 +02:00
Nat Goodspeed
155c803075 Fix documentation about random_chase_lev et al. 2016-05-20 11:39:28 -04:00
Oliver Kowalke
4e581b55d7 update documentation 2016-05-16 14:26:39 +02:00
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
Nat Goodspeed
1949291c98 Fix context::attach() documentation.
The notes erroneously imposed conditions on *this that should have been
applied instead to its parameter f.
2016-05-02 16:08:57 -04:00
Nat Goodspeed
ff35fc1f25 Flesh out doc for context::attach() and detach() + migration notes. 2016-05-02 15:56:11 -04:00
Nat Goodspeed
247e551fbd Make context::is_context(type) values explicitly unspecified. 2016-05-02 13:24:13 -04:00
Oliver Kowalke
968c32c842 replace context::migrate() by context::attach()/context::detach() 2016-05-02 18:56:17 +02:00
Nat Goodspeed
f905cb4c3b Document context::suspend() and set_ready(). 2016-03-12 10:45:54 -05:00
Nat Goodspeed
d9e5bde625 Make a pass through enum class type and new context::is_context().
Do not document the specific values of enum class type values. Consuming code
should be based solely on enum names; their values are an implementation
detail.

Ensure that all enum class type values are mentioned in note for is_context()
method.
2016-03-07 21:17:56 -05:00
Oliver Kowalke
fb11931689 Update scheduling.qbk 2016-02-16 08:30:50 +01:00
Oliver Kowalke
d5faf0c8fb fix docu for context::is_context() 2016-02-16 08:29:47 +01:00
Nat Goodspeed
ea0c16080b A few more documentation-related edits 2016-02-15 17:12:56 -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
60e9a688ac Flesh out explanations of sched_algorithm::suspend_until(), notify().
Document boost::fibers::scheduler::ready_queue_t and expand on the
context::ready_link(), ready_unlink() and ready_is_linked() methods.

Explain migrate() restrictions on is_main_context() and
is_dispatcher_context() context instances.
2016-02-10 00:15: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
1f33787ade update docu 2016-01-20 19:42:40 +01:00
Oliver Kowalke
34be91cb3c update docu migration 2016-01-17 21:08:29 +01:00
Oliver Kowalke
d541e88a4b update documentation 2015-12-29 15:04:13 +01:00
Oliver Kowalke
6499bb07e7 fiber_context renamed to context 2015-09-07 17:23:59 +02:00
Nat Goodspeed
abc1aa610e Proofreading pass continues through stack allocation. 2015-09-02 16:59:06 -04:00
Nat Goodspeed
58fa3add01 Change set_scheduling_algorithm() to use_scheduling_algorithm<>(). 2015-08-31 12:21:53 -04:00
Nat Goodspeed
fd9f16776a Flesh out Customization section with step-by-step directions.
Mark up examples/priority.cpp with code snippets for use in Customization.

Also clarify the effect of changing wait_interval().
2015-08-16 16:38:21 -04:00
Oliver Kowalke
b8e2520b29 documentation: formating 2015-07-29 11:48:42 +02:00
Oliver Kowalke
5c9cbd0307 documentation: add missing function descriptions 2015-07-29 11:30:43 +02:00
Oliver Kowalke
b63f95758d documentation: formating of code in scheduler.qbk 2015-07-28 18:24:25 +02:00
Oliver Kowalke
161f2a134c documentation: default scheduler is not heap-allocated
- round_robin, the default scheduler, is created at thread-creation
  as thread-local, local static
2015-07-28 18:20:31 +02:00
Oliver Kowalke
1413406fab documentation: ready_fibers() returns zero if scheduler has no fibers 2015-07-28 17:22:12 +02:00
Nat Goodspeed
3674114094 Merge branch 'develop' of github.com:olk/boost-fiber into develop 2015-07-19 23:11:02 -04:00
Nat Goodspeed
1dadc51ec4 Add reference documentation for custom scheduling classes.
Also resolve certain previously-dangling internal documentation
cross-references: custom, synchronization, scheduling, stack.

Add documentation placeholders for mutex (and friends) lock(), try_lock(),
unlock() methods.

Add documentation placeholders for future (and shared_future)
get_exception_ptr() methods.

Remove documentation for obsolete future (and shared_future) swap(), operator
safe_bool() and operator!() methods.
2015-07-19 22:57:56 -04:00
Nat Goodspeed
bbdd101393 Snapshot of incomplete documentation review. 2015-07-10 09:47:11 -04:00
Oliver Kowalke
ca7e8be37c update docu 2015-05-23 18:27:08 +02:00
Nat Goodspeed
2687814477 Merge branch 'develop' of github.com:olk/boost-fiber into sched-props-dev
Resolved conflicts:
	doc/condition_variables.qbk
	examples/cpp03/migration/workstealing_round_robin.cpp
	examples/cpp03/migration/workstealing_round_robin.hpp
	include/boost/fiber/algorithm.hpp
	include/boost/fiber/bounded_queue.hpp
	include/boost/fiber/detail/fiber_base.hpp
	include/boost/fiber/detail/fifo.hpp
	include/boost/fiber/detail/waiting_queue.hpp
	include/boost/fiber/detail/worker_fiber.hpp
	include/boost/fiber/fiber.hpp
	include/boost/fiber/fiber_manager.hpp
	include/boost/fiber/fixedsize_stack.hpp
	include/boost/fiber/operations.hpp
	include/boost/fiber/round_robin.hpp
	include/boost/fiber/unbounded_queue.hpp
	src/detail/worker_fiber.cpp
	src/fiber.cpp
	src/fiber_manager.cpp
	src/round_robin.cpp
2015-05-10 22:03:35 -04:00
Oliver Kowalke
3b9382f8df update docu 2015-02-14 11:11:11 +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
Nat Goodspeed
6fb1b04789 Change some doc references from 'algorithm' to 'sched_algorithm'.
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 10:00:34 -04:00
Oliver Kowalke
c005bb2c8f doc update 2014-09-09 20:40:26 +02:00
Oliver Kowalke
491012776f update docu 2014-09-05 17:55:49 +02:00
Oliver Kowalke
32d4a056d0 update documentation 2014-08-20 17:37:47 +02:00
Oliver Kowalke
142dd2cd5b some doc corrections 2014-07-21 20:04:38 +02:00
Oliver Kowalke
5b6d77b6b5 renaming of fiber classes 2014-03-05 17:30:11 +01:00