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 start()
Call start before handling this operation.
aggregator_ext(const handler_type &h)
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
void execute(const Body &b)
BASIC INTERFACE: Enter a function for exclusive execution by the aggregator.
atomic< aggregator_operation * > mailbox
An atomically updated list (aka mailbox) of aggregator_operations.
Base class for types that should not be assigned.
void itt_store_word_with_release(tbb::atomic< T > &dst, U src)
T itt_load_word_with_acquire(const tbb::atomic< T > &src)
aggregator_operation * next()
void execute_impl(aggregator_operation &op)
virtual void apply_body()=0
void finish()
Call finish when done handling this operation.
Basic aggregator 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 operator()(aggregator_operation *op_list) const
virtual ~basic_operation_base()
void start_handle_operations()
Trigger the handling of operations when the handler is free.
void process(aggregator_operation *op)
EXPERT INTERFACE: Enter a user-made operation into the aggregator's mailbox.
basic_operation(const Body &b)
aggregator_operation * my_next
void __TBB_store_with_release(volatile T &location, V value)
Base class for types that should not be copied or assigned.
void itt_hide_store_word(T &dst, T src)
uintptr_t handler_busy
Controls thread access to handle_operations.
aggregator_operation_status
void apply_body() __TBB_override
void set_next(aggregator_operation *n)
Identifiers declared inside namespace internal should never be used directly by client code.
handler_type handle_operations
T itt_hide_load_word(const T &src)
void call_itt_notify(notify_type, void *)
Aggregator base class and expert interface.
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.
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
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.