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