Oliver Kowalke
57acf06cb4
remove main-context from dispatcher-context wait queue
...
- on termination the maincontext joins the dispatcher context
2017-02-26 12:20:48 +01:00
Oliver Kowalke
b5e62ab70d
callcc() -> resume()
2017-01-05 19:10:07 +01:00
Oliver Kowalke
5d2c4b701c
make pointer to scheduler an atomic type
2016-11-17 08:17:28 +01:00
Oliver Kowalke
38f1bc5945
use MPSC queue for remote-ready-queue
2016-10-30 19:41:42 +01:00
Oliver Kowalke
88ce345ec3
BOOST_FIBERS_NO_ATOMICS disables remote-ready-queue
...
- remote-ready-queu is only used to signal the readyness of a fiber
by other threads (that to not own the signaled fiber)
2016-10-22 11:12:33 +02:00
Oliver Kowalke
9add30c909
synchr. non-atomics via fence
2016-05-23 18:37:35 +02:00
oliver Kowalke
d37e26cd14
apply memory ordering in detaching/attaching a context
2016-05-23 11:19:24 +02:00
oliver Kowalke
18a69a77a6
Revert "replace atomic< scheduler > by raw pointer"
...
This reverts commit 4c8ccf384a .
2016-05-23 10:48:50 +02:00
oliver Kowalke
4c8ccf384a
replace atomic< scheduler > by raw pointer
...
- to synchronize, use a fence in scheduler::detach_worker_context()
and scheduler::attach_worker_context()
2016-05-23 09:02:01 +02:00
Oliver Kowalke
66e61eac4b
use std::mutex to protec remote-reqdy queue in scheduler
2016-05-16 21:29:25 +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
Oliver Kowalke
43866a4d2e
fix comparasion of atomics for MSVC
2016-05-03 18:23:09 +02:00
Oliver Kowalke
968c32c842
replace context::migrate() by context::attach()/context::detach()
2016-05-02 18:56:17 +02:00
oliver Kowalke
52da1e907e
pass dispatcher-context as arg to resume()
...
- use standard way how a context is suspended and pushed to
ready-queue for dispatcher-fiber
2016-04-26 09:01:59 +02:00
oliver Kowalke
5218f46350
remove unecessary argument in scheduler::suspend()
2016-04-25 10:29:44 +02:00
Oliver Kowalke
01db63c816
at scheduler destruction join dispatcher fiber
2016-04-21 17:46:09 +02:00
oliver Kowalke
2fd3383dc6
start dispatcher-context in dtor of scheduler
2016-04-20 09:58:34 +02:00
Oliver Kowalke
57267ec957
remove support for fiber interruption
2016-04-19 18:16:31 +02:00
oliver Kowalke
5027d3526f
impl. remote-ready-queue with std::vector<>
2016-04-18 12:52:48 +02:00
Oliver Kowalke
f3f5634846
call scheduling_algorithm::notify() scheduer terminats
2016-04-17 19:46:10 +02:00
oliver Kowalke
f7d151ac86
do not interrupt() fibers at scheduler destruction
...
- the user is responsible that all worker fibers terminate
- dispatcher fiber must run till all worker fiber are terminated and
the the scheduler is shut down
- flag shutdown is set in ~scheduler before resuming the ready fibers
- the ready fibers must contain at least the dispatcher fiber
2016-04-14 09:14:50 +02:00
oliver Kowalke
5e3999cc5d
access correct context in killing worker-fibers
2016-04-08 14:17:59 +02:00
Oliver Kowalke
e43cf5b1ac
enum for context types
2016-02-15 19:49:22 +01:00
Oliver Kowalke
547e19a811
adapt to template execution_context (v2)
2016-02-09 17:15:36 +01:00
Oliver Kowalke
778656934f
captured_context renamed to execution_context (v2)
...
- execution_context (v2) is enabled per default
- execution_context (v1) is used for segmented stacks
2016-02-06 13:34:10 +01:00
Oliver Kowalke
12555f9561
execution_context required for segmented stacks
2016-02-06 10:21:54 +01:00
Oliver Kowalke
7e183329ee
use captured_context aonly
2016-02-05 18:14:38 +01:00
Oliver Kowalke
12554320ae
enable pre-condition in scheduler::attack_worker_context()
2015-12-27 23:22:38 +01:00
Oliver Kowalke
570b0a9ea9
rename condition -> condition_variable
2015-12-13 13:46:26 +01:00
Oliver Kowalke
e9a0d4d669
remove noexcept from dtor of context+scheduler
2015-12-05 15:14:31 +01:00
Oliver Kowalke
3319841788
use spinlock_lock+context instead of function<>
2015-12-03 17:57:00 +01:00
Oliver Kowalke
9063b8dc5b
some C++14 polishing
2015-12-02 17:19:51 +01:00
Oliver Kowalke
726d4d51b9
++14 polishing
2015-12-01 21:07:11 +01:00
Oliver Kowalke
a344247f07
remove forced_unwind and related functions
...
- unwinding the stack via exception is not always necessary
- usually a fiber returns from its fiber-fn (stack is already unwound)
- if a fiber has to terminate, interrupt that fiber
2015-11-25 19:30:25 +01:00
Oliver Kowalke
26227e31b2
refactor scheduler::dispatch()
2015-11-25 19:25:48 +01:00
Oliver Kowalke
6d3f00902f
use this in capture-list
2015-11-22 14:42:28 +01:00
Oliver Kowalke
ca655a84d9
execute func + set active fiber inside context::resume()
2015-11-22 14:28:09 +01:00
Oliver Kowalke
cfc4b6f292
protect worker_queue by spinlock
2015-10-21 15:26:06 +02:00
Oliver Kowalke
4e6b625f65
assert if source and traget context are euqal in resume_()
2015-10-20 17:52:01 +02:00
Oliver Kowalke
4710e12fe1
rename scheduler::re_schedule() -> scheduler::suspend()
2015-10-18 20:03:38 +02:00
Oliver Kowalke
5f5a607d87
request unwinding and resume fibers at end of dispatch()
2015-10-18 09:08:15 +02:00
Oliver Kowalke
559e498982
context::terminate() as replacement for set_terminated_()/release()
2015-10-17 15:10:28 +02:00
Oliver Kowalke
bafd65bcf3
remove yield-queue + pass functor to resume-op
2015-10-16 21:48:57 +02:00
Oliver Kowalke
338f9754ee
move yielded context' after resume-op
2015-10-15 12:21:54 +02:00
Oliver Kowalke
65f33ae615
remove unnecessary checks
2015-10-14 15:54:08 +02:00
Oliver Kowalke
51c1a96c4d
introduce attach/detach of context
2015-10-14 13:37:44 +02:00
Oliver Kowalke
7d18820962
erase terminated context from worker-queue
2015-10-12 22:03:20 +02:00
Oliver Kowalke
22b96fc826
assertion: main- and dispatcher cotnext must not be unwinded
2015-10-11 12:04:20 +02:00
Oliver Kowalke
b859f8984a
add assertion in get_next_() ensures scheduler is set
2015-10-11 08:44:06 +02:00
Oliver Kowalke
950a1571bb
do not move yielded contexts in resume_()
2015-10-11 08:43:40 +02:00