Flow 1.0.0
Flow project: Full implementation reference.
|
#include "flow/async/async_fwd.hpp"
#include "flow/async/op.hpp"
#include "flow/util/sched_task_fwd.hpp"
#include "flow/util/util.hpp"
Go to the source code of this file.
Classes | |
class | flow::async::Concurrent_task_loop |
The core flow::async interface, providing an optionally multi-threaded thread pool onto which runnable Task s, optionally arranged into concurrency-avoiding Op s, can be boost.asio-posted for subsequent execution. More... | |
Namespaces | |
namespace | flow |
Catch-all namespace for the Flow project: A collection of various production-quality modules written in modern C++17, originally by ygoldfel. | |
namespace | flow::async |
Flow module containing tools enabling multi-threaded event loops operating under the asynchronous-task proactor pattern, by providing a streamlined API around boost.asio event loops with added advanced task- and thread-scheduling features. | |
Macros | |
#define | FLOW_ASYNC_HW_THREAD_AFFINITY_PTHREAD_VIA_CORE_IDX |
Macro set to 1 (else 0 ) if and only if natively the pthread API allows one to set thread-to-core affinity. More... | |
#define | FLOW_ASYNC_HW_THREAD_AFFINITY_MACH_VIA_POLICY_TAG |
Macro set to 1 (else 0 ) if and only if natively there is Mach kernel API that allows to set thread-to-core affinity using the policy tag mechanism. More... | |
Functions | |
template<typename Handler > | |
auto | flow::async::asio_handler_via_op (Concurrent_task_loop *loop, const Op &op, Handler &&handler) |
Given a boost.asio completion handler handler for a boost.asio async_*() action on some boost.asio I/O object to be initiated in the immediate near future, returns a wrapped handler with the same signature to be passed as the handler arg to that async_*() action, so that handler() will execute non-concurrently with other tasks in Op op . More... | |
#define FLOW_ASYNC_HW_THREAD_AFFINITY_MACH_VIA_POLICY_TAG |
Macro set to 1
(else 0
) if and only if natively there is Mach kernel API that allows to set thread-to-core affinity using the policy tag mechanism.
This is specific to Mac kernels (used in Darwin/Mac) and not all of them.
The macro conceptually belongs to the flow::async namespace, hence the prefix.
Definition at line 668 of file concurrent_task_loop.hpp.
#define FLOW_ASYNC_HW_THREAD_AFFINITY_PTHREAD_VIA_CORE_IDX |
Macro set to 1
(else 0
) if and only if natively the pthread API allows one to set thread-to-core affinity.
This API, if available, is an extension of POSIX and not always available.
The macro conceptually belongs to the flow::async namespace, hence the prefix.
Definition at line 656 of file concurrent_task_loop.hpp.