Intel(R) Threading Building Blocks Doxygen Documentation
version 4.2.3
|
Go to the documentation of this file.
17 #ifndef __TBB__aggregator_H
18 #define __TBB__aggregator_H
20 #define __TBB_aggregator_H_include_area
23 #if !TBB_PREVIEW_AGGREGATOR
24 #error Set TBB_PREVIEW_AGGREGATOR before including aggregator.h
31 namespace interface6 {
55 virtual void apply_body() = 0;
61 template<
typename Body>
82 op_list = op_list->
next();
95 template <
typename handler_type>
98 aggregator_ext(
const handler_type&
h) : handler_busy(0), handle_operations(
h) { mailbox = NULL; }
121 }
while (mailbox.compare_and_swap(&op, res) != res);
126 start_handle_operations();
169 pending_operations = mailbox.fetch_and_store(NULL);
172 handle_operations(pending_operations);
186 template<
typename Body>
189 this->execute_impl(op);
195 using interface6::aggregator;
196 using interface6::aggregator_ext;
197 using interface6::aggregator_operation;
202 #undef __TBB_aggregator_H_include_area
204 #endif // __TBB__aggregator_H
void finish()
Call finish when done handling this operation.
void execute(const Body &b)
BASIC INTERFACE: Enter a function for exclusive execution by the aggregator.
virtual void apply_body()=0
uintptr_t handler_busy
Controls thread access to handle_operations.
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Base class for types that should not be copied or assigned.
atomic< aggregator_operation * > mailbox
An atomically updated list (aka mailbox) of aggregator_operations.
void itt_store_word_with_release(tbb::atomic< T > &dst, U src)
T itt_load_word_with_acquire(const tbb::atomic< T > &src)
Aggregator base class and expert interface.
void spin_wait_while_eq(const volatile T &location, U value)
Spin WHILE the value of the variable is equal to a given value.
void start_handle_operations()
Trigger the handling of operations when the handler is free.
handler_type handle_operations
void operator()(aggregator_operation *op_list) const
aggregator_operation * next()
void start()
Call start before handling this operation.
void __TBB_store_with_release(volatile T &location, V value)
void execute_impl(aggregator_operation &op)
aggregator_operation_status
Basic aggregator interface.
void set_next(aggregator_operation *n)
void itt_hide_store_word(T &dst, T src)
Base class for types that should not be assigned.
aggregator_ext(const handler_type &h)
virtual ~basic_operation_base()
Identifiers declared inside namespace internal should never be used directly by client code.
T itt_hide_load_word(const T &src)
basic_operation(const Body &b)
void call_itt_notify(notify_type, void *)
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.
aggregator_operation * my_next
void apply_body() __TBB_override
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
void process(aggregator_operation *op)
EXPERT INTERFACE: Enter a user-made operation into the aggregator's mailbox.
Copyright © 2005-2020 Intel Corporation. All Rights Reserved.
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
registered trademarks or trademarks of Intel Corporation or its
subsidiaries in the United States and other countries.
* Other names and brands may be claimed as the property of others.