Commit Graph

227 Commits

Author SHA1 Message Date
Oliver Kowalke
bafd65bcf3 remove yield-queue + pass functor to resume-op 2015-10-16 21:48:57 +02:00
Oliver Kowalke
6dfd42c343 reduce loop count for testing conditions mt 2015-10-16 21:47:39 +02:00
Oliver Kowalke
de076200a6 future: support moveable-only types 2015-10-14 21:03:33 +02:00
Oliver Kowalke
0deb75a699 modify work-sharign example 2015-10-12 18:44:21 +02:00
Oliver Kowalke
1eafd3e281 support movable types 2015-10-12 10:29:14 +02:00
Oliver Kowalke
ac167e4d36 newline in test/Jamfile added 2015-10-11 12:01:03 +02:00
Oliver Kowalke
b03ab3b3ba disable mt-tests 2015-09-29 17:48:34 +02:00
Oliver Kowalke
a48d3a44fa fix test 2015-09-28 18:47:51 +02:00
Oliver Kowalke
43da6f5c1c modify test for multithreaded access to future 2015-09-27 16:16:09 +02:00
Oliver Kowalke
6e479279dd use flag for multihtreded use of condition test 2015-09-24 17:36:41 +02:00
Oliver Kowalke
1f88055f42 enhance test 2015-09-23 17:45:13 +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
1ad58fbba1 add interruption 2015-09-21 20:18:53 +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
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
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
e6ddbe10a1 class recursive_mutex added 2015-09-19 17:27:45 +02:00
Oliver Kowalke
3f5e076f3a class mutex added 2015-09-19 17:01:20 +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
a8d426cc5f add more fiber tests 2015-09-16 22:21:51 +02:00
Oliver Kowalke
a8e90aedb8 add joining a fiber 2015-09-16 20:51:26 +02:00
Oliver Kowalke
eafeaaae01 remove examples and tests 2015-09-16 19:12:57 +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
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
c416b6fe1e disable test with multi-threading
- scheduler::remote_signal() not implemented yet
2015-09-11 20:11:56 +02:00
Oliver Kowalke
abd1ff524c fixes for signaling interruption and wait 2015-09-11 18:42:16 +02:00
Oliver Kowalke
4887028567 fix unit-test for bounded_channel 2015-09-09 19:48:55 +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
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
Nat Goodspeed
b51d78877c Test that bounded_channel(n, n) throws an exception.
Given the documented behavior of bounded_channel(hwm, lwm), it follows that
bounded_channel(n, n) is invalid.

If the number of items in the channel == hwm, a push will block.

But if the number of items in the channel <= lwm, a push will succeed without
blocking.

Therefore, setting hwm == lwm results in a contradiction.
2015-08-15 11:12:34 -04:00
Nat Goodspeed
3e95946350 Add tests for bounded_channel::lower_bound().
We intend to document that bounded_channel(hwm) is equivalent to
bounded_channel(hwm, (hwm-1)). That may or may not simplify the code, but it
certainly simplifies the reader's mental model of the relationship between the
two constructors.

However, that assertion requires that for bounded_channel(hwm), lower_bound()
in fact return (hwm-1). Test for that.

Also use BOOST_CHECK_EQUAL(a, b) instead of BOOST_CHECK(a == b) where
applicable, since the former is more informative when the test fails.

Sadly, tests on channel_op_status must still use BOOST_CHECK(a == b) --
apparently because channel_op_status, as an enum class, cannot be streamed to
std::ostream?
2015-08-15 10:48:58 -04:00
Oliver Kowalke
7c25c83465 (un)bounded_channel: remove is_empty()/is_closed()/is_full() 2015-08-05 19:59:47 +02:00
Nat Goodspeed
b6f4fc8d42 test_try_push() should call try_push(). 2015-08-05 07:51:49 -04:00
Oliver Kowalke
3b6f736a39 fixes for (un)bounded_channel 2015-08-04 19:30:31 +02:00
Oliver Kowalke
dbfde81013 enhance unit-test for bounded_channel 2015-08-04 17:19:26 +02:00
Oliver Kowalke
ba80101f47 enhance test for bounded_channel
- note implementation of waiting_queue does not preserve order
  therefore unit test for bounded_channel fails
2015-08-03 17:33:04 +02:00
Oliver Kowalke
f456902492 add test for bounded_channel (basics) 2015-08-02 21:17:04 +02:00
Oliver Kowalke
3538208387 test_unbounded_channel: add test for moveable type 2015-08-02 21:16:40 +02:00
Oliver Kowalke
f275125b93 fixes for unbounded_channel 2015-08-02 20:48:52 +02:00
Oliver Kowalke
6a0b14e3e8 some mods for asnyc(some mods for asnyc()) 2015-07-31 14:49:48 +02:00
Oliver Kowalke
81babd03be tests: enable tests for shared_future<> 2015-07-31 12:12:36 +02:00
Oliver Kowalke
a9eb294f9d mt mutext test: replace rref by generic lambda 2015-07-31 08:59:40 +02:00
Oliver Kowalke
cdcbbf09a7 unit-test with member-fn 2015-06-24 18:23:11 +02:00
Oliver Kowalke
9a27f6f363 fix unit-tests, check for C+11/14 features 2015-06-21 19:01:14 +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
f373348335 update Jamfiles.v2 2015-02-12 16:30:10 +01:00
Oliver Kowalke
fbe98be71e std::copy_exception is deprecated (use std::make_exception_ptr) 2015-01-05 19:57:51 +01:00
Oliver Kowalke
3b332c17ee variadric arguments 2015-01-01 14:40:39 +01:00
Oliver Kowalke
44326ebdd3 remove priority 2014-12-28 08:35:44 +01:00
Oliver Kowalke
7b3f18becd improve test related to futures 2014-12-28 08:06:43 +01:00
Oliver Kowalke
2f19be6d67 use C++11 2014-12-27 19:07:42 +01:00
Oliver Kowalke
2d4a919faa fix errors because of -pedantic 2014-08-23 14:20:01 +02:00
Oliver Kowalke
7ef6302f86 arbitrary clock::time_point conforming to chrono clock concept allowed 2014-07-08 17:41:59 +02:00
Oliver Kowalke
8df4a56564 use high_resolution_clock 2014-07-07 20:32:56 +02:00
Oliver Kowalke
a9f52d3007 add future<>::get_exception_ptr() 2014-06-29 14:13:33 +02:00
Oliver Kowalke
b936512136 remove mutex::scoped_lock by unique_lock< mutex > 2014-06-29 13:31:01 +02:00
Oliver Kowalke
cf90b40978 class fiber_group removed 2014-03-19 21:29:05 +01:00
Oliver Kowalke
9f7f74f662 use symmetric_coroutine<>::yield_type::operator()() 2014-03-15 19:16:13 +01:00
Oliver Kowalke
c197068680 reduce loop-count for multithreaded mutext-tests 2014-03-04 18:06:14 +01:00
Oliver Kowalke
67111d3e58 workstealing round-robin scheduler moved to examples 2014-03-04 18:01:42 +01:00
Oliver Kowalke
353cb27614 fix returning reference from temporary in sharred_state 2014-02-27 17:12:03 +01:00
Oliver Kowalke
a29d0be4d4 remove tests for unsupported features 2014-01-13 20:52:55 +01:00
Oliver Kowalke
2d082fb420 fix signature and behaviour of shared_future< R >::get() 2014-01-13 20:52:55 +01:00
Oliver Kowalke
bf08c5583d change repate-count for futures-mt test 2013-12-29 22:16:48 +01:00
Oliver Kowalke
472992f61c modified test_futures_mt 2013-12-29 21:36:05 +01:00
Oliver Kowalke
cda3b09042 add test for futures in mt-env 2013-12-29 11:33:31 +01:00
Oliver Kowalke
67ca128a8f rename future_base to shared_state 2013-12-29 08:06:21 +01:00
Oliver Kowalke
5d27bb6454 add test waiting for future in other thread 2013-12-28 10:11:48 +01:00
Oliver Kowalke
dee8c72d2a rename boost.strand to boost.fiber 2013-12-16 17:58:20 +01:00
Oliver Kowalke
511b740ec2 default-scheduler allocated 2013-12-02 19:45:48 +01:00
Oliver Kowalke
2e1fd67707 yield thief thread before work-stealing 2013-11-03 14:03:44 +01:00
Oliver Kowalke
436883ca33 add workstealing round_robin 2013-10-25 18:01:56 +02:00
Oliver Kowalke
5b6dc61b2f update test_migration 2013-10-23 23:19:18 +02:00
Oliver Kowalke
c6718b1ee8 add fiber-migration between threads 2013-10-23 18:21:58 +02:00
Oliver Kowalke
8e04df986c multithreaded condition_variable 2013-10-22 19:32:10 +02:00
Oliver Kowalke
3eafc0725f thread-safe mutex' 2013-10-22 14:42:01 +02:00
Oliver Kowalke
ec8a11e60c atomic fiber::state_ 2013-10-17 19:21:26 +02:00
Oliver Kowalke
8d4987bf5c reset() + future 2013-10-14 17:43:18 +02:00
Oliver Kowalke
decba3f33f std::terminate() called if exception not catched 2013-10-01 19:44:06 +02:00
Oliver Kowalke
2a6ea310a1 fix linkingissue 2013-09-28 16:53:04 +02:00
Oliver Kowalke
84d2a50491 fix Jamfiles and multithreading 2013-09-28 10:24:47 +02:00
Oliver Kowalke
00ec9d32a3 update 2013-08-28 21:57:14 +02:00
Oliver Kowalke
d91578120f fix libname 2013-08-18 22:14:10 +02:00
Oliver Kowalke
3485f551aa add async() 2013-08-18 10:30:15 +02:00