Commit Graph

53 Commits (master)

Author SHA1 Message Date
Daniel Kolesa 2077ff0752 correctly enforce symbol visibility 2020-09-19 04:16:26 +02:00
Daniel Kolesa 51d7a62bee eliminate -Wweak-vtables warnings 2018-01-05 22:48:38 +01:00
Daniel Kolesa ec9ddb2aad yield current task in single-threaded coroutine scheduler on spawn
This schedules tasks more aggressively, letting side tasks always run.
2017-11-05 22:10:22 +01:00
Daniel Kolesa 67525af4e5 gcc/libstdc++ 7.x fixes 2017-11-03 12:56:34 +01:00
Daniel Kolesa 2ce488002a use <> for includes everywhere 2017-06-19 16:59:36 +02:00
Daniel Kolesa d6a2a3f07c include all examples in generated docs 2017-05-03 02:14:27 +02:00
Daniel Kolesa 9f593eebd1 tids are non-copyable, only movable 2017-05-02 23:49:56 +02:00
Daniel Kolesa 2c62b82ec4 future-like objects representing tasks in concurrency 2017-05-02 21:42:31 +02:00
Daniel Kolesa 09c3c02c33 doc cleanups 2017-04-12 19:12:09 +02:00
Daniel Kolesa 1525edf3d7 type/include cleanup 2017-04-09 16:44:45 +02:00
Daniel Kolesa 62676f4222 rename octastd to libostd 2017-04-06 20:14:52 +02:00
Daniel Kolesa 3b7f54e64c virtual destructor for scheduler 2017-04-03 18:20:43 +02:00
Daniel Kolesa 08bd63d773 doc cleanups 2017-04-03 18:11:24 +02:00
Daniel Kolesa 90af651f24 document thread pool 2017-03-29 20:41:53 +02:00
Daniel Kolesa ca40fb1e0c document concurrency 2017-03-27 21:49:55 +02:00
Daniel Kolesa b86b7f9b29 allow setting the thread count for coroutine scheduler 2017-03-26 14:38:57 +02:00
Daniel Kolesa cdf3875b81 custom stack allocator support for start where available 2017-03-25 17:52:11 +01:00
Daniel Kolesa b02521ac19 only lock for stack manipulation with potentially unsafe allocators 2017-03-25 15:13:21 +01:00
Daniel Kolesa 9fc3d70fe3 lock when allocating/deallocating/reserving stacks in a threaded env 2017-03-25 15:09:53 +01:00
Daniel Kolesa ed9f7c8949 add wrapper methods to reserve more stacks to existing schedulers 2017-03-25 15:04:28 +01:00
Daniel Kolesa b1d95faa41 make it possible to provide custom stack allocator types to schedulers 2017-03-25 15:01:14 +01:00
Daniel Kolesa 1826511187 make it possible to allocate coroutines/generators with scheduler 2017-03-25 14:22:52 +01:00
Daniel Kolesa 73c4dd6cbf yields are noexcept 2017-03-24 15:56:16 +01:00
Daniel Kolesa c1e0ae56ac prevent starting of another scheduler if one is already running 2017-03-24 15:52:40 +01:00
Daniel Kolesa f79236e94f make full spawn/make_channel methods on base scheduler 2017-03-24 15:31:41 +01:00
Daniel Kolesa a1974ddf45 clean up the helper funcs 2017-03-24 15:24:07 +01:00
Daniel Kolesa c96d64e5ba remove the scheduler iface nonsense (just make a virtual base) 2017-03-24 15:18:41 +01:00
Daniel Kolesa a4a524b29d remove the _in suffixes (not actually necessary) 2017-03-24 14:25:13 +01:00
Daniel Kolesa 9ab5f03612 remove template arg 2017-03-23 17:52:14 +01:00
Daniel Kolesa a04db12d49 dispatch directly from start when using bscs 2017-03-23 15:25:23 +01:00
Daniel Kolesa 023af03361 spawn/make_channel/yield without explicitly specifying scheduler 2017-03-23 11:35:23 +01:00
Daniel Kolesa 147b8d8042 non-template spawn 2017-03-23 10:56:21 +01:00
Daniel Kolesa d73ad08e87 make channels outside of scheduler 2017-03-23 10:41:13 +01:00
Daniel Kolesa 45e65d7ec7 unified single-type interface for channels 2017-03-23 03:17:09 +01:00
Daniel Kolesa 0e24dcd1c4 nested coroutine example + use stackpool for dispatcher in bscs 2017-03-23 00:40:42 +01:00
Daniel Kolesa 1351ac14f6 fix lockups when a condvar signals while a task is being blocked 2017-03-22 20:01:37 +01:00
Daniel Kolesa 66758fa1df only put task to the waitlist after it's yielded 2017-03-22 19:00:36 +01:00
Daniel Kolesa cd5bc965bd use csched_task for both coroutine schedulers 2017-03-22 18:44:06 +01:00
Daniel Kolesa 18cfe5119f track current task for coroutine scheduler separately 2017-03-22 18:23:29 +01:00
Daniel Kolesa bffc917f46 use a custom coroutine type for tasks 2017-03-22 17:58:34 +01:00
Daniel Kolesa 2537d955d1 fixes, bigger stack for main task, take spawn funcs by value 2017-03-22 17:32:58 +01:00
Daniel Kolesa c1a1c4a1ac fix issues with coroutine scheduler threads locking up 2017-03-21 19:49:06 +01:00
Daniel Kolesa c120f49634 implement an M:N thread/coroutine scheduler 2017-03-21 00:28:38 +01:00
Daniel Kolesa e50a86f339 it's not needed/desirable to hold onto the lock while notifying 2017-03-20 02:44:38 +01:00
Daniel Kolesa 23652409f6 use lock_guard where possible 2017-03-20 02:35:50 +01:00
Daniel Kolesa 5e2891c806 make dispatcher a coroutine (that way main can do its thing) 2017-03-19 23:36:29 +01:00
Daniel Kolesa cef3c96bdb use stack pool for coroutine scheduler 2017-03-19 20:02:09 +01:00
Daniel Kolesa c123e98178 some universal funcs for working with schedulers 2017-03-19 18:12:08 +01:00
Daniel Kolesa 9a9466e943 make channels copyable (referring to a shared state) 2017-03-19 16:23:00 +01:00
Daniel Kolesa 9ad7fe76c4 add a simple coroutine scheduler that multiplexes tasks onto a single thread 2017-03-19 14:11:23 +01:00