q66
|
9fc3d70fe3
|
lock when allocating/deallocating/reserving stacks in a threaded env
|
2017-03-25 15:09:53 +01:00 |
|
q66
|
ed9f7c8949
|
add wrapper methods to reserve more stacks to existing schedulers
|
2017-03-25 15:04:28 +01:00 |
|
q66
|
b1d95faa41
|
make it possible to provide custom stack allocator types to schedulers
|
2017-03-25 15:01:14 +01:00 |
|
q66
|
1826511187
|
make it possible to allocate coroutines/generators with scheduler
|
2017-03-25 14:22:52 +01:00 |
|
q66
|
73c4dd6cbf
|
yields are noexcept
|
2017-03-24 15:56:16 +01:00 |
|
q66
|
c1e0ae56ac
|
prevent starting of another scheduler if one is already running
|
2017-03-24 15:52:40 +01:00 |
|
q66
|
f79236e94f
|
make full spawn/make_channel methods on base scheduler
|
2017-03-24 15:31:41 +01:00 |
|
q66
|
a1974ddf45
|
clean up the helper funcs
|
2017-03-24 15:24:07 +01:00 |
|
q66
|
c96d64e5ba
|
remove the scheduler iface nonsense (just make a virtual base)
|
2017-03-24 15:18:41 +01:00 |
|
q66
|
a4a524b29d
|
remove the _in suffixes (not actually necessary)
|
2017-03-24 14:25:13 +01:00 |
|
q66
|
9ab5f03612
|
remove template arg
|
2017-03-23 17:52:14 +01:00 |
|
q66
|
a04db12d49
|
dispatch directly from start when using bscs
|
2017-03-23 15:25:23 +01:00 |
|
q66
|
023af03361
|
spawn/make_channel/yield without explicitly specifying scheduler
|
2017-03-23 11:35:23 +01:00 |
|
q66
|
147b8d8042
|
non-template spawn
|
2017-03-23 10:56:21 +01:00 |
|
q66
|
d73ad08e87
|
make channels outside of scheduler
|
2017-03-23 10:41:13 +01:00 |
|
q66
|
45e65d7ec7
|
unified single-type interface for channels
|
2017-03-23 03:17:09 +01:00 |
|
q66
|
0e24dcd1c4
|
nested coroutine example + use stackpool for dispatcher in bscs
|
2017-03-23 00:40:42 +01:00 |
|
q66
|
1351ac14f6
|
fix lockups when a condvar signals while a task is being blocked
|
2017-03-22 20:01:37 +01:00 |
|
q66
|
66758fa1df
|
only put task to the waitlist after it's yielded
|
2017-03-22 19:00:36 +01:00 |
|
q66
|
cd5bc965bd
|
use csched_task for both coroutine schedulers
|
2017-03-22 18:44:06 +01:00 |
|
q66
|
18cfe5119f
|
track current task for coroutine scheduler separately
|
2017-03-22 18:23:29 +01:00 |
|
q66
|
bffc917f46
|
use a custom coroutine type for tasks
|
2017-03-22 17:58:34 +01:00 |
|
q66
|
2537d955d1
|
fixes, bigger stack for main task, take spawn funcs by value
|
2017-03-22 17:32:58 +01:00 |
|
q66
|
c1a1c4a1ac
|
fix issues with coroutine scheduler threads locking up
|
2017-03-21 19:49:06 +01:00 |
|
q66
|
c120f49634
|
implement an M:N thread/coroutine scheduler
|
2017-03-21 00:28:38 +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
|
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
|
c123e98178
|
some universal funcs for working with schedulers
|
2017-03-19 18:12:08 +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
|
35cda8872e
|
add a thread pool impl
|
2017-03-18 18:34:13 +01:00 |
|
q66
|
b4b7224dd0
|
initial skeleton for concurrency module
|
2017-03-18 01:05:10 +01:00 |
|