q66
|
c1c68fb339
|
always use packaged_task for thread_pool push
|
2017-03-20 03:11:59 +01:00 |
|
q66
|
e50a86f339
|
it's not needed/desirable to hold onto the lock while notifying
|
2017-03-20 02:44:38 +01:00 |
|
q66
|
23652409f6
|
use lock_guard where possible
|
2017-03-20 02:35:50 +01:00 |
|
q66
|
e7855faeb1
|
add a way to reserve more stacks in stack_pool
|
2017-03-20 02:12:49 +01:00 |
|
q66
|
0d815e3610
|
default 64 KiB stack on all systems
|
2017-03-20 00:51:16 +01:00 |
|
q66
|
5e2891c806
|
make dispatcher a coroutine (that way main can do its thing)
|
2017-03-19 23:36:29 +01:00 |
|
q66
|
cef3c96bdb
|
use stack pool for coroutine scheduler
|
2017-03-19 20:02:09 +01:00 |
|
q66
|
d35e8b6341
|
channel api cleanup
|
2017-03-19 19:35:00 +01:00 |
|
q66
|
94d72b693e
|
remove split stack support (not portable or available on Windows)
|
2017-03-19 19:11:54 +01:00 |
|
q66
|
c123e98178
|
some universal funcs for working with schedulers
|
2017-03-19 18:12:08 +01:00 |
|
q66
|
16362167e7
|
clean up concurrency example
|
2017-03-19 16:38:30 +01:00 |
|
q66
|
9a9466e943
|
make channels copyable (referring to a shared state)
|
2017-03-19 16:23:00 +01:00 |
|
q66
|
9ad7fe76c4
|
add a simple coroutine scheduler that multiplexes tasks onto a single thread
|
2017-03-19 14:11:23 +01:00 |
|
q66
|
9f6d8da9db
|
allow return of value from scheduler start
|
2017-03-18 20:04:22 +01:00 |
|
q66
|
f07eefaf5a
|
thread_pool push result type fix
|
2017-03-18 20:02:03 +01:00 |
|
q66
|
795234c476
|
do the same with the returning version
|
2017-03-18 18:53:57 +01:00 |
|
q66
|
3462703b3a
|
only bind when args are passed
|
2017-03-18 18:50:23 +01:00 |
|
q66
|
35cda8872e
|
add a thread pool impl
|
2017-03-18 18:34:13 +01:00 |
|
q66
|
495c08602f
|
simplify example
|
2017-03-18 01:08:21 +01:00 |
|
q66
|
b4b7224dd0
|
initial skeleton for concurrency module
|
2017-03-18 01:05:10 +01:00 |
|
q66
|
0da22e777d
|
add a way to retrieve the current coroutine context
|
2017-03-17 03:04:15 +01:00 |
|
q66
|
06fbdc7419
|
remove coroutine_type, but keep public context
|
2017-03-17 02:46:24 +01:00 |
|
q66
|
c7451024c7
|
update exmaple output
|
2017-03-17 02:39:38 +01:00 |
|
q66
|
959f319318
|
type inspection support on coroutines (with context as common base type)
|
2017-03-17 02:38:37 +01:00 |
|
q66
|
75e4ac1cb7
|
unnecessary template keyword
|
2017-03-17 02:16:06 +01:00 |
|
q66
|
043e38601f
|
instantiate yielder at point of func call
|
2017-03-17 01:14:56 +01:00 |
|
q66
|
f8b7275d5f
|
get rid of some index sequences
|
2017-03-17 01:11:30 +01:00 |
|
q66
|
a30e0ae639
|
move p_func into p_stor
|
2017-03-17 01:02:33 +01:00 |
|
q66
|
58a11a3415
|
make storage for args/result a standalone object
|
2017-03-17 00:48:11 +01:00 |
|
q66
|
23493c49af
|
do not decay; breaks const type inputs
|
2017-03-16 23:40:00 +01:00 |
|
q66
|
0a0fe27317
|
better generator yield/value storage semantics
|
2017-03-16 23:25:59 +01:00 |
|
q66
|
f4d3382617
|
allow custom condition variable types in channels
|
2017-03-16 01:16:03 +01:00 |
|
q66
|
ce155190e0
|
do not store the allocator/stack pointer directly, also call stack allocator dtor
|
2017-03-15 01:19:01 +01:00 |
|
q66
|
78d6a23ad3
|
align the stack pointer by 16 bytes
|
2017-03-15 00:59:26 +01:00 |
|
q66
|
bdb95567e4
|
implement a stack pool (allocates a chunk of stacks, gives out as requested)
|
2017-03-14 19:34:05 +01:00 |
|
q66
|
5e956ad0ce
|
remove include
|
2017-03-14 01:48:21 +01:00 |
|
q66
|
783057a3a3
|
add initial basic implementation for channels
|
2017-03-14 01:46:58 +01:00 |
|
q66
|
cf568c6f30
|
get rid of arg_wrapper, use lightweight storage for results
|
2017-03-13 20:18:35 +01:00 |
|
q66
|
64380bda53
|
use pointers to store coro args with perfect forwarding (guaranteed to be alive until resume return)
|
2017-03-13 19:32:56 +01:00 |
|
q66
|
c89953c11f
|
coro args/results don't need to be default constructible
|
2017-03-13 19:01:44 +01:00 |
|
q66
|
ea9ac2e5c6
|
add the same iterators to generator_range
|
2017-03-13 18:50:44 +01:00 |
|
q66
|
b63729641b
|
auto unwind in coroutine_context (no manual dtor), clean up generator
|
2017-03-13 17:29:48 +01:00 |
|
q66
|
c2b82771f9
|
hide internal coroutine_context funcs from the rest
|
2017-03-12 16:58:33 +01:00 |
|
q66
|
f1341b913c
|
unify context_call between coroutines and generators
|
2017-03-12 16:54:49 +01:00 |
|
q66
|
de45dd2e80
|
do stacksize clamp in ctor
|
2017-03-11 18:41:03 +01:00 |
|
q66
|
b2a71d773d
|
stack cleanups
|
2017-03-11 18:39:46 +01:00 |
|
q66
|
c07f7d5ddc
|
correct noexcept in coroutine.hh
|
2017-03-11 18:30:08 +01:00 |
|
q66
|
88e6fe3906
|
revert the stack freeing method (can be achieved via stack allocator)
|
2017-03-11 18:24:55 +01:00 |
|
q66
|
20f57dad9b
|
dealloc stacks in destructor (allows stack reuse)
|
2017-03-11 17:57:04 +01:00 |
|
q66
|
0185fa7c12
|
coroutine fixes/cleanups, remove INIT state (can be checked better)
|
2017-03-11 17:23:50 +01:00 |
|