Oliver Kowalke
8a9c9916c7
support this_fiber::yield()
2015-09-18 17:48:57 +02:00
Oliver Kowalke
bf0ea3749b
add TODO comments
2015-09-18 17:32:19 +02:00
Oliver Kowalke
7a794647ae
replace context::terminated_is_linked() by context::is_terminated()
...
- context::terminated_is_linked() might be missleading because this
state is transient
- if the context is pushed to the terminated-queue,
context::terminated_is_linked() returns true, if the context is
removed from terminated-queue context::terminated_is_linked() returns
false
- new flag flag_terminated intoduced
- flag_terminated will be set in context::set_terminated_(), which will
be called for worker context' in the lambda
2015-09-16 22:17:01 +02:00
Oliver Kowalke
00ae711cd7
join only non-terminated fibers
...
- context::join() adds active-context to wait-queue only
if joined context is not terminated
- we can not use terminated_is_linked() because the context
might already be removed from scheudler's termianted-queue
2015-09-16 22:11:11 +02:00
Oliver Kowalke
70f4d9eeff
rename variable active-context scheduler
2015-09-16 22:10:23 +02:00
Oliver Kowalke
06e3037cc0
add comments ini scheduler
2015-09-16 21:17:42 +02:00
Oliver Kowalke
dd0e1d1893
add autoreset_event for waling up dispatcher context
...
- dispatcher waits on autoreset_event if ready-queue is empty
- autoreset_event is set if a ready context is pushed to the
ready-queue
2015-09-16 21:07:26 +02:00
Oliver Kowalke
a8e90aedb8
add joining a fiber
2015-09-16 20:51:26 +02:00
Oliver Kowalke
ddc5af0a36
run dispatcher context at scheduler destruction
2015-09-16 19:20:47 +02:00
Oliver Kowalke
6d43540a29
cleanup
2015-09-15 19:15:00 +02:00
Oliver Kowalke
73b3843696
test for ready-/runnabl-queue if transfered from remote_ready_queue
2015-09-13 16:35:54 +02:00
Oliver Kowalke
8c4dda107c
support signaling a fiber from another thread
...
- for this first version lockfree::queue<> is used
- maybe Dimitry Byukov's mpsc intrusive queue is better suited
2015-09-13 09:20:35 +02:00
Oliver Kowalke
f3b376224c
comments fxed + break loop of sleeping fibers
2015-09-11 21:35:39 +02:00
Oliver Kowalke
f14be69223
remove scheduler::wait:interval_ + fixups of comments
2015-09-11 21:03:09 +02:00
Oliver Kowalke
693c53d034
fix sleep_queue: cmp-op + use set<>::insert()
2015-09-11 20:45:54 +02:00
Oliver Kowalke
51d08226a4
if not fibers in queues - suspend till signaled or timeout
...
- if no fibers are ready to run suspend the thread and wait till
* signaled by scheduler::signal() for new fiber (ready to run)
* time_point of a sleeping fiber has reached
2015-09-11 20:45:54 +02:00
Oliver Kowalke
abd1ff524c
fixes for signaling interruption and wait
2015-09-11 18:42:16 +02:00
Oliver Kowalke
ebd147c08d
fix join(), this_fiber::sleep_until()
2015-09-10 20:42:28 +02:00
Oliver Kowalke
4764c1184c
signal() added
2015-09-10 19:52:08 +02:00
Oliver Kowalke
d3843efbe0
fix using intruisve::list<>
2015-09-10 18:08:10 +02:00
Oliver Kowalke
ce1b22b809
add sanity checks before destructing context in scheduler
2015-09-10 05:49:55 +02:00
Oliver Kowalke
c1d3d478d8
use wait_queue with safe_link featurre, use erase_and_dispose() for
...
unlinking
2015-09-10 05:49:10 +02:00
Oliver Kowalke
fbf412aae1
delete termianted fibers
2015-09-09 21:04:56 +02:00
Oliver Kowalke
19c3df0862
ontext cleanup inf schedulerBitte geben Sie eine Commit-Beschreibung für Ihre Änderungen ein. Zeilen,
2015-09-09 19:36:30 +02:00
Oliver Kowalke
50791e3dd7
put main-context to yield-queue in ~scheduler()
2015-09-09 19:36:02 +02:00
Oliver Kowalke
9a59ee0a17
test explictly against nullptr
2015-09-09 19:35:33 +02:00
Oliver Kowalke
c89410dfd8
uses intrusive::list<> isntread hand-written queues
2015-09-09 19:22:54 +02:00
Oliver Kowalke
291b9d7c17
small fixes
2015-09-08 21:33:20 +02:00
Oliver Kowalke
6459b76075
do not use context::active() inside scheduler
2015-09-07 22:30:26 +02:00
Oliver Kowalke
2689e34be6
store pointer to main-context in scheduler
2015-09-07 22:29:57 +02:00
Oliver Kowalke
d66575e2e6
fiber_manager renamed to scheduler
2015-09-07 17:35:37 +02:00
Oliver Kowalke
6499bb07e7
fiber_context renamed to context
2015-09-07 17:23:59 +02:00
Oliver Kowalke
7233f617d7
remove class scheduler - fiber_context has static TLS
...
- detail:.scheduler was removed
- fiber_context has a static thread-local pointer to the active
fiber_context
- fiber_context has member to pointer of fiber_manager
- functions of fiber_manager are accessed only via fiber_context
- if fiber f is resumed, the fiber_manager of the current active fiber
f' is assigned to f
-> that is necessary if f was stolen form another thread
2015-09-07 11:50:01 +02:00
Oliver Kowalke
66e7b59424
fix usage of std::chrono
2015-09-05 11:57:36 +02:00
Oliver Kowalke
0a296315f7
use steady_clock isntead of high_resolution_clock
2015-09-05 10:57:50 +02:00
Oliver Kowalke
4187c68f4e
release mutex before signal condition-variable
2015-09-05 10:37:27 +02:00
Oliver Kowalke
2601e72673
let sched_algo_ be managed by unique_ptr
2015-08-26 18:59:18 +02:00
Oliver Kowalke
887c96f835
interrupt + join deteched fibers in dtor fiber-manger
2015-08-26 17:29:54 +02:00
Oliver Kowalke
49b4b095fb
wait for detached fibers in dtor of fiber_manager
2015-08-25 22:16:42 +02:00
Oliver Kowalke
2855e5128a
fix asio stuff
2015-08-18 17:46:14 +02:00
Oliver Kowalke
b91fc419cf
fix waiting_queue impl
2015-08-03 20:19:51 +02:00
Oliver Kowalke
4140e10330
this_fiber::yield() is not an interruption point
2015-07-29 11:47:17 +02:00
Oliver Kowalke
642fff9b93
remove unused preserve_fpu() functionality
2015-07-29 11:14:27 +02:00
Oliver Kowalke
d61b395207
Update round_robin.cpp
2015-07-20 19:42:11 +02:00
Oliver Kowalke
e7b1ee131c
add function ready_fibers()
2015-07-03 18:03:14 +02:00
Oliver Kowalke
5d18cd5a4e
add interruption point after fiber_manager::run()
...
- functions fiber_manager::join()/fiber_manager::yield()/fiber_manager:.wait()/fiber_manager_wait_until()
check for interrption of the current fiber
2015-06-21 10:53:37 +02:00
Oliver Kowalke
6c35324727
use atomics per default
...
- atomics can be disable using BOOST_FIBERS_NO_ATOMICS compiler flag
2015-06-20 21:31:34 +02:00
Oliver Kowalke
20d08d98cd
enable atomics with BOOST_FIBERS_USE_ATOMCIS
2015-06-19 21:39:34 +02:00
Oliver Kowalke
2002dba9d3
enable/disable atomic<> with BOOST_FIBERS_THREADSAFE
2015-06-19 18:57:23 +02:00
Oliver Kowalke
61dc492f31
some stuff/corrections
2015-06-19 18:55:02 +02:00