Commit Graph

519 Commits (628cede1eba1d2ceb8c761b237e9b712db3354ed)

Author SHA1 Message Date
Daniel Kolesa 09c3c02c33 doc cleanups 2017-04-12 19:12:09 +02:00
Daniel Kolesa 220f9ee374 remove explicit copy/move ctors 2017-04-12 00:45:02 +02:00
Daniel Kolesa ce5c20a973 simplify chainable range algos 2017-04-12 00:07:21 +02:00
Daniel Kolesa 9d1c739956 document range.hh 2017-04-11 21:32:53 +02:00
Daniel Kolesa fb02bd2cb9 string.hh documentation + noexcept 2017-04-10 19:43:44 +02:00
Daniel Kolesa 1525edf3d7 type/include cleanup 2017-04-09 16:44:45 +02:00
Daniel Kolesa a913f7beca document io.hh 2017-04-09 16:09:54 +02:00
Daniel Kolesa 2b74cd170f document stream.hh 2017-04-08 18:03:02 +02:00
Daniel Kolesa 572620b10f channel api improvements 2017-04-07 19:28:19 +02:00
Daniel Kolesa 62676f4222 rename octastd to libostd 2017-04-06 20:14:52 +02:00
Daniel Kolesa 36332dff40 document environ and filesystem 2017-04-05 20:53:14 +02:00
Daniel Kolesa 480b7a56a4 more documentation 2017-04-04 19:29:15 +02:00
Daniel Kolesa 9f35909660 fixes in streams 2017-04-04 01:06:55 +02:00
Daniel Kolesa 4a7baa40a0 remove types.hh 2017-04-04 00:30:07 +02:00
Daniel Kolesa 3b7f54e64c virtual destructor for scheduler 2017-04-03 18:20:43 +02:00
Daniel Kolesa b1c9a0d196 more doc fixes 2017-04-03 18:17:47 +02:00
Daniel Kolesa 08bd63d773 doc cleanups 2017-04-03 18:11:24 +02:00
Daniel Kolesa a4523027c2 format doc fixes 2017-04-03 17:53:41 +02:00
Daniel Kolesa d4edd42596 detailed docs for format module 2017-04-02 18:24:30 +02:00
Daniel Kolesa 6d0c0a91f4 document context_stack.hh 2017-04-02 15:11:22 +02:00
Daniel Kolesa f2a78ad589 guaranteed single-argument slice 2017-04-01 16:49:38 +02:00
Daniel Kolesa fe4d7a553a remove pop_front_n/pop_back_n from direct definition 2017-04-01 01:07:30 +02:00
Daniel Kolesa d99768de96 remove equals_ stuff 2017-03-31 03:39:28 +02:00
Daniel Kolesa dc7c124069 remove distance_ stuff 2017-03-31 03:36:40 +02:00
Daniel Kolesa 8f70b60484 remove range push_ stuff 2017-03-31 03:34:35 +02:00
Daniel Kolesa 6ddb0f1b17 remove the range half stuff for now 2017-03-31 03:28:18 +02:00
Daniel Kolesa 1bd12fda04 use @brief 2017-03-30 00:38:43 +02:00
Daniel Kolesa d5f2f7f6b7 document generic_condvar 2017-03-30 00:36:51 +02:00
Daniel Kolesa 90af651f24 document thread pool 2017-03-29 20:41:53 +02:00
Daniel Kolesa 32110bcb9f simplify range-for-only iterators using relaxed c++17 rules 2017-03-28 23:58:44 +02:00
Daniel Kolesa 049c4b8c47 document coroutines 2017-03-28 22:21:38 +02:00
Daniel Kolesa 94915ee5fc merge coroutine context into coroutine.hh 2017-03-28 18:59:16 +02:00
Daniel Kolesa ca40fb1e0c document concurrency 2017-03-27 21:49:55 +02:00
Daniel Kolesa cca5a12755 some initial documentation 2017-03-27 18:51:50 +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 f93b08a924 implement stack pool's interface on regular stack allocators 2017-03-25 14:50:16 +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 47145f0431 make the generic condvar public 2017-03-23 10:25:24 +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 422a65cade actually free coroutine stacks in dtor (more predictable and safer) 2017-03-22 22:38:48 +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 307123fd35 revert the threadpool split (wasn't used in the end) 2017-03-21 00:29:38 +01:00
Daniel Kolesa c120f49634 implement an M:N thread/coroutine scheduler 2017-03-21 00:28:38 +01:00
Daniel Kolesa a080a17d00 separate thread pool into two structures
the internal one will also be used in parallel coroutine scheduler
2017-03-20 18:42:54 +01:00
Daniel Kolesa 367d2b8b31 lightweight backing for thread_pool tasks (no shared_ptr) 2017-03-20 04:12:44 +01:00
Daniel Kolesa c1c68fb339 always use packaged_task for thread_pool push 2017-03-20 03:11:59 +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 e7855faeb1 add a way to reserve more stacks in stack_pool 2017-03-20 02:12:49 +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 d35e8b6341 channel api cleanup 2017-03-19 19:35:00 +01:00
Daniel Kolesa 94d72b693e remove split stack support (not portable or available on Windows) 2017-03-19 19:11:54 +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
Daniel Kolesa 9f6d8da9db allow return of value from scheduler start 2017-03-18 20:04:22 +01:00
Daniel Kolesa f07eefaf5a thread_pool push result type fix 2017-03-18 20:02:03 +01:00
Daniel Kolesa 795234c476 do the same with the returning version 2017-03-18 18:53:57 +01:00
Daniel Kolesa 3462703b3a only bind when args are passed 2017-03-18 18:50:23 +01:00
Daniel Kolesa 35cda8872e add a thread pool impl 2017-03-18 18:34:13 +01:00
Daniel Kolesa b4b7224dd0 initial skeleton for concurrency module 2017-03-18 01:05:10 +01:00
Daniel Kolesa 0da22e777d add a way to retrieve the current coroutine context 2017-03-17 03:04:15 +01:00
Daniel Kolesa 06fbdc7419 remove coroutine_type, but keep public context 2017-03-17 02:46:24 +01:00
Daniel Kolesa 959f319318 type inspection support on coroutines (with context as common base type) 2017-03-17 02:38:37 +01:00
Daniel Kolesa 75e4ac1cb7 unnecessary template keyword 2017-03-17 02:16:06 +01:00
Daniel Kolesa 043e38601f instantiate yielder at point of func call 2017-03-17 01:14:56 +01:00
Daniel Kolesa f8b7275d5f get rid of some index sequences 2017-03-17 01:11:30 +01:00
Daniel Kolesa a30e0ae639 move p_func into p_stor 2017-03-17 01:02:33 +01:00
Daniel Kolesa 58a11a3415 make storage for args/result a standalone object 2017-03-17 00:48:11 +01:00
Daniel Kolesa 23493c49af do not decay; breaks const type inputs 2017-03-16 23:40:00 +01:00
Daniel Kolesa 0a0fe27317 better generator yield/value storage semantics 2017-03-16 23:25:59 +01:00
Daniel Kolesa f4d3382617 allow custom condition variable types in channels 2017-03-16 01:16:03 +01:00
Daniel Kolesa ce155190e0 do not store the allocator/stack pointer directly, also call stack allocator dtor 2017-03-15 01:19:01 +01:00
Daniel Kolesa 78d6a23ad3 align the stack pointer by 16 bytes 2017-03-15 00:59:26 +01:00
Daniel Kolesa bdb95567e4 implement a stack pool (allocates a chunk of stacks, gives out as requested) 2017-03-14 19:34:05 +01:00
Daniel Kolesa 5e956ad0ce remove include 2017-03-14 01:48:21 +01:00