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