2
0
mirror of https://github.com/boostorg/fiber.git synced 2026-02-18 01:52:24 +00:00
Commit Graph

254 Commits

Author SHA1 Message Date
Oliver Kowalke
4a2162f83b fixes for unbounded_queue<> 2014-07-20 11:10:48 +02:00
Oliver Kowalke
e077960c14 fixes for bounded_queue<> 2014-07-20 11:10:32 +02:00
Nat Goodspeed
59fd8ed319 Expressions with side effects in BOOST_ASSERT() fail in release builds. :-P
Also suppress a few 'unused variable' warnings.
2014-07-18 11:05:30 -04:00
Nat Goodspeed
9e21b43221 Move new node_type allocations before locking mtx_. 2014-07-18 08:29:10 -04:00
Nat Goodspeed
d7035722b4 Pass unique_lock down to push_() and push_wait_until_().
Earlier refactoring moved the unique_lock instantiation back to public
methods, though it was referenced in private methods. Pass it into those
methods.
2014-07-17 16:53:20 -04:00
Nat Goodspeed
b01cc1f224 Reintroduce pthread_key_create() implementation for Mac thread_local_ptr.
At some point the original implementation seems to have gotten lost?
2014-07-17 15:02:04 -04:00
Nat Goodspeed
9e81e970d9 Move lock acquisition from private back to public methods.
Oliver pointed out the thread-safe-interface pattern:
http://www.cs.wustl.edu/~schmidt/PDF/locking-patterns.pdf
2014-07-17 09:40:20 -04:00
Nat Goodspeed
0bde483bd2 Refactor bounded_queue<T> implementation to reduce redundancy.
Introduce private push_(), try_push_(), push_wait_until_() helper methods:
each of push(), try_push() and push_wait_until() has two signatures for
value_type const& versus value_type&&, but the code paths are identical once
we have a new node_type in hand. Moreover, extract processing common to all
into private push_and_notify_() method. (This fixes an inconsistency in push()
exception behavior.)

Extract common processing from pop(), value_pop(), try_pop() and
pop_wait_until() to private value_pop_() method. This retains a node_type::ptr
to the old head node until return time, unifying the code paths between its
return-by-value and assign-through-reference callers. (This fixes an
inconsistency in try_pop() exception behavior.)
2014-07-16 12:06:37 -04:00
Oliver Kowalke
2b421d41f8 fix for MSVC 2014-07-15 22:28:41 +02:00
Oliver Kowalke
22850775ca variadric tempalte args 2014-07-15 20:33:14 +02:00
Oliver Kowalke
7ef27d66d6 fix typename for MSVC 2014-07-13 20:46:47 +02:00
Oliver Kowalke
07f394a1b4 fixes for MSVC 2014-07-13 20:35:15 +02:00
Oliver Kowalke
161e9c73fc some fixes for MSVC 2014-07-13 17:13:51 +02:00
Oliver Kowalke
cf43ddd8b9 add function type for MSVC 2014-07-12 21:56:08 +02:00
Oliver Kowalke
a0eca3c1d9 using BOOST_RV_REF consitent 2014-07-12 11:50:57 +02:00
Oliver Kowalke
cdb855cbf8 define BOOST_FIBERS_USE_VARIADIC_FIBER 2014-07-10 19:46:31 +02:00
Oliver Kowalke
cff7bc7ea5 move conver_tp() to separate file 2014-07-10 19:45:54 +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
5cf28979a5 queues should support value_pop() 2014-07-07 17:40:53 +02:00
Oliver Kowalke
05256654da reduce redundancy of try_lock()/lock() in mutex 2014-07-05 11:09:40 +02:00
Oliver Kowalke
19388c3674 explict test of intrusive_ptr against NULL 2014-07-05 10:03:40 +02:00
Oliver Kowalke
e972219e69 use explicit-operator-bool macro instead of safe_bool 2014-07-04 18:32:40 +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
a2d3eba716 fix migrating a fiber between threads 2014-06-26 19:01:49 +02:00
Oliver Kowalke
bf51216237 re-organize precondition for worker_fiber::resume() 2014-06-25 18:23:23 +02:00
Oliver Kowalke
b4b9dbea77 some fixes 2014-06-24 19:49:14 +02:00
Oliver Kowalke
dfeb4ff290 changes to support fier migration
- still not correct
2014-06-23 20:15:02 +02:00
Oliver Kowalke
6b5e6aef22 use TLS for pointer to fiber manager 2014-06-22 20:34:43 +02:00
Oliver Kowalke
91ccc91ee7 some fixes 2014-06-22 19:31:58 +02:00
Oliver Kowalke
dabcd39066 add volatile (not working) 2014-06-17 14:35:07 +02:00
Oliver Kowalke
026003bb65 use the free fm_<xyz> - functions 2014-06-17 11:51:14 +02:00
Oliver Kowalke
9ff51ada50 split fiber_manager in data part and free functions 2014-06-17 10:02:43 +02:00
Oliver Kowalke
9fab5b8f4e fix unecessary typename keyword for MSVC 2014-06-03 17:39:37 +02:00
Oliver Kowalke
9fb17db7b7 remove pragma 2014-06-03 17:32:08 +02:00
Oliver Kowalke
44bbde4cda remove forgotten test code - deallocate coroutine 2014-03-26 17:42:51 +01:00
Oliver Kowalke
f4defed2b5 workstealing example 2014-03-25 17:45:56 +01:00
Oliver Kowalke
b5b22ff606 workstealing example 2014-03-24 20:05:14 +01:00
Oliver Kowalke
e031ba4762 move asio-stuff to example section 2014-03-24 19:14:38 +01:00
Oliver Kowalke
a0b4d61ea3 asio fiber_manager 2014-03-23 20:17:18 +01:00
Oliver Kowalke
ab91ab52b8 changes for boost.asio 2014-03-23 18:20:15 +01:00
Oliver Kowalke
e83ba7f642 add setter/getter for wait-interval of fiber_manager 2014-03-22 20:19:36 +01:00
Oliver Kowalke
2d012334b1 allocate main_fiber inside synch. primitives 2014-03-22 18:22:32 +01:00
Oliver Kowalke
493cb704dc split into fifo and waiting_queue: sleep if nothing to do 2014-03-22 18:09:03 +01:00
Oliver Kowalke
9057a3c365 split round_robin into sched_algorithm + fiber_manager 2014-03-20 20:04:59 +01:00
Oliver Kowalke
ba010422f1 allocate worker_fiber on fiber's stack 2014-03-20 18:14:46 +01:00
Oliver Kowalke
687df5744f remove unnecessary fiber ctor 2014-03-20 08:20:27 +01:00
Oliver Kowalke
cf90b40978 class fiber_group removed 2014-03-19 21:29:05 +01:00
Oliver Kowalke
228aae6833 do not use reference-counting 2014-03-19 19:55:56 +01:00