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
Oliver Kowalke
431d829776
no intrusive-ptr
2014-03-18 22:01:14 +01:00
Oliver Kowalke
c65b053564
remove temporary files
2014-03-18 19:01:07 +01:00
Oliver Kowalke
7be95bfd80
include header fiber_base.hpp instead of notify.hpp
2014-03-18 18:59:15 +01:00
Oliver Kowalke
6526dc5835
Merge branch 'feature/yield' into develop
...
Conflicts:
include/boost/fiber/detail/fifo.hpp
include/boost/fiber/detail/worker_fiber.hpp
include/boost/fiber/round_robin.hpp
performance/preallocated_stack_allocator.hpp
src/detail/worker_fiber.cpp
src/round_robin.cpp
2014-03-17 19:12:13 +01:00
Oliver Kowalke
3b882ade23
use fifo in round_robin
2014-03-16 22:07:01 +01:00
Oliver Kowalke
8cbca1363e
use fifo as waiting-queue
2014-03-16 16:54:18 +01:00
Oliver Kowalke
a3e8944fd0
equeue fiber first
2014-03-16 13:44:36 +01:00