17#ifndef __TBB__aggregator_impl_H
18#define __TBB__aggregator_impl_H
22#include "../tbb_profiling.h"
32template <
typename Derived>
48template <
typename operation_type >
63 template <
typename handler_type >
64 void execute(operation_type *op, handler_type &handle_operations,
bool long_life_time =
true) {
69 const uintptr_t status = op->status;
95 __TBB_ASSERT(long_life_time,
"Waiting for an operation object that might be destroyed during processing.");
109 template <
typename handler_type >
111 operation_type *op_list;
136 handle_operations(op_list);
143template <
typename handler_type,
typename operation_type >
159template<
typename aggregating_
class,
typename operation_list>
161 aggregating_class *
fi;
165 void operator()(operation_list* op_list) {
fi->handle_operations(op_list); }
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function h
Identifiers declared inside namespace internal should never be used directly by client code.
void spin_wait_until_eq(const volatile T &location, const U value)
Spin UNTIL the value of the variable is equal to a given value.
T itt_load_word_with_acquire(const tbb::atomic< T > &src)
void itt_store_word_with_release(tbb::atomic< T > &dst, U src)
void call_itt_notify(notify_type, void *)
void __TBB_store_with_release(volatile T &location, V value)
void spin_wait_while_eq(const volatile T &location, U value)
Spin WHILE the value of the variable is equal to a given value.
aggregated_operation base class
uintptr_t status
Zero value means "wait" status, all other values are "user" specified values and are defined into the...
atomic< operation_type * > pending_operations
An atomically updated list (aka mailbox) of pending operations.
void execute(operation_type *op, handler_type &handle_operations, bool long_life_time=true)
Execute an operation.
uintptr_t handler_busy
Controls thread access to handle_operations.
void start_handle_operations(handler_type &handle_operations)
Trigger the handling of operations when the handler is free.
void initialize_handler(handler_type h)
aggregator(handler_type h)
handler_type handle_operations
void execute(operation_type *op)
void operator()(operation_list *op_list)
aggregating_functor(aggregating_class *fi_)