Commit Graph

1840 Commits

Author SHA1 Message Date
Oliver Kowalke
6e479279dd use flag for multihtreded use of condition test 2015-09-24 17:36:41 +02:00
Oliver Kowalke
fc404c58eb unwind at shutdown
- scheduler holds a list of managed worker-fibers
- ~scheduler() requests stack unwinding for fibers not yet terminated
2015-09-24 17:35:40 +02:00
Oliver Kowalke
1f88055f42 enhance test 2015-09-23 17:45:13 +02:00
Oliver Kowalke
7668f86c26 more comments in scheduler.cpp 2015-09-23 17:44:50 +02:00
Oliver Kowalke
d3076f930b some enhancements for scheduler 2015-09-23 17:44:35 +02:00
Oliver Kowalke
fcb981ccf7 pass flag_ as reference arg to lmbda for condition in autoreset_event 2015-09-23 17:42:17 +02:00
Oliver Kowalke
d0cb6e6756 some examples 2015-09-22 21:10:14 +02:00
Oliver Kowalke
e38dc9b139 renaming of scheduler member functions 2015-09-22 19:30:29 +02:00
Oliver Kowalke
b43f288469 support for futures added 2015-09-22 19:17:08 +02:00
Oliver Kowalke
1b274d9b73 support for fiber-specific storage 2015-09-22 19:10:09 +02:00
Oliver Kowalke
b4f47821d9 add notice of derived work to tests 2015-09-22 19:06:37 +02:00
Oliver Kowalke
38aa1f4366 support of detaching fibers added 2015-09-22 19:05:57 +02:00
Oliver Kowalke
6ad6579666 fix interruption + condition:wait() 2015-09-21 20:47:53 +02:00
Oliver Kowalke
c0f3fe393c enhance test_fiber 2015-09-21 20:37:55 +02:00
Oliver Kowalke
128b534058 fix context 2015-09-21 20:34:41 +02:00
Oliver Kowalke
38457260bc remoce noexcept specifier from context::join() 2015-09-21 20:34:09 +02:00
Oliver Kowalke
1ad58fbba1 add interruption 2015-09-21 20:18:53 +02:00
Oliver Kowalke
2e0d09b3c7 fix comparation of address and nullptr 2015-09-21 20:14:07 +02:00
Oliver Kowalke
ef7daa9534 MSVC-fix for main_context/dispatcher_cotnext/worker_context 2015-09-21 20:05:04 +02:00
Oliver Kowalke
eec3d34fb0 remote ready-queue uses differrent hook than local ready-queue 2015-09-20 22:06:59 +02:00
Oliver Kowalke
7b1e7839b4 class bounded_channel added 2015-09-20 18:10:55 +02:00
Oliver Kowalke
b8de63af06 class unbounded_channel added 2015-09-20 18:05:05 +02:00
Oliver Kowalke
22a1f1257d some source code formating 2015-09-20 15:38:43 +02:00
Oliver Kowalke
bba963c64c class barrier added 2015-09-20 15:38:32 +02:00
Oliver Kowalke
a856a96369 class condtion added 2015-09-20 11:33:59 +02:00
Oliver Kowalke
558012bdcf rewording of comments in scheduler implementation 2015-09-20 11:28:11 +02:00
Oliver Kowalke
33093a2122 add missing header in operations.hpp 2015-09-20 11:27:42 +02:00
Oliver Kowalke
b3660a3432 reorder member variables of context
- member hooks must be destroyed before execution_context
- otherwise an segementation fault is caused
- destruction of execution_context deallocates stack on which
  the member variables of context are allocated
2015-09-20 11:25:32 +02:00
Oliver Kowalke
067547f18e remove unused context::deallocate() 2015-09-20 11:24:27 +02:00
Oliver Kowalke
c8a1c4e4df class recursive_timed_mutex added 2015-09-19 18:14:17 +02:00
Oliver Kowalke
6b01f060b7 class timed_mutex added 2015-09-19 18:03:41 +02:00
Oliver Kowalke
1797badafc fix memory ordering for release-op (spinlock/mutex/recursive_mutex) 2015-09-19 17:38:10 +02:00
Oliver Kowalke
e6ddbe10a1 class recursive_mutex added 2015-09-19 17:27:45 +02:00
Oliver Kowalke
44d4ce82e0 use atomic< context * > as owner type 2015-09-19 17:26:33 +02:00
Oliver Kowalke
3f5e076f3a class mutex added 2015-09-19 17:01:20 +02:00
Oliver Kowalke
943e21e69b add support for signaling a context as ready 2015-09-19 16:19:02 +02:00
Oliver Kowalke
59946d4426 add noexcept keyword to scheduler::wait_until() and context::wait_until() 2015-09-19 16:18:36 +02:00
Oliver Kowalke
4e1e9fc240 reminder/comment in scheduler 2015-09-19 16:14:06 +02:00
Oliver Kowalke
a89f4a5979 protect context' wait-queue for concurrent access
- protect wait-queue as well termiantion flag
2015-09-19 09:32:14 +02:00
Oliver Kowalke
bbf41e95f3 add spinlock used to protect forr concurrent access (threads)
- calls std::this_thread::yield()
2015-09-19 09:31:22 +02:00
Oliver Kowalke
6da902ff09 support sleep_for()/sleep_until() 2015-09-19 08:59:53 +02:00
Oliver Kowalke
8d41c994af add unit-test for joining a fiber running in another fiber 2015-09-18 18:33:35 +02:00
Oliver Kowalke
8a9c9916c7 support this_fiber::yield() 2015-09-18 17:48:57 +02:00
Oliver Kowalke
7d448f4943 enhance unit-test: fiber-fn with additional arguments 2015-09-18 17:37:02 +02:00
Oliver Kowalke
bf0ea3749b add TODO comments 2015-09-18 17:32:19 +02:00
Oliver Kowalke
a8d426cc5f add more fiber tests 2015-09-16 22:21:51 +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