Flow 1.0.2
Flow project: Full implementation reference.
Classes | Namespaces | Macros | Functions
concurrent_task_loop.hpp File 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 Tasks, optionally arranged into concurrency-avoiding Ops, 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...
 

Macro Definition Documentation

◆ FLOW_ASYNC_HW_THREAD_AFFINITY_MACH_VIA_POLICY_TAG

#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.

See also
FLOW_ASYNC_HW_THREAD_AFFINITY_PTHREAD_VIA_CORE_IDX

Definition at line 668 of file concurrent_task_loop.hpp.

◆ FLOW_ASYNC_HW_THREAD_AFFINITY_PTHREAD_VIA_CORE_IDX

#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.

See also
FLOW_ASYNC_HW_THREAD_AFFINITY_MACH_VIA_POLICY_TAG

Definition at line 656 of file concurrent_task_loop.hpp.