17 #ifndef __TBB_concurrent_monitor_H 18 #define __TBB_concurrent_monitor_H 115 tbb::aligned_space<binary_semaphore>
sema;
131 void prepare_wait( thread_context& thr, uintptr_t ctx = 0 );
153 template<
typename WaitUntil,
typename Context>
154 void wait( WaitUntil until, Context on );
187 template<
typename WaitUntil,
typename Context>
216 if( predicate( thr->
context ) ) {
circular_doubly_linked_list_with_sentinel waitset_t
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 void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp end
__TBB_atomic unsigned epoch
const node_t * end() const
tbb::aligned_space< binary_semaphore > sema
~circular_doubly_linked_list_with_sentinel()
circular_doubly_linked_list_with_sentinel::node_t waitset_node_t
binary_semaphore & semaphore()
void add(node_t *n)
add to the back of the list
A lock that occupies a single byte.
Circular doubly-linked list with sentinel.
void notify_one_relaxed()
Notify one thread about the event. Relaxed version.
void prepare_wait(thread_context &thr, uintptr_t ctx=0)
prepare wait by inserting 'thr' into the wait queue
void __TBB_store_relaxed(volatile T &location, V value)
~concurrent_monitor()
dtor
void notify_one()
Notify one thread about the event.
void flush_to(circular_doubly_linked_list_with_sentinel &lst)
move all elements to 'lst' and initialize the 'this' list
__TBB_atomic unsigned epoch
circular_doubly_linked_list_with_sentinel()
void notify_relaxed(const P &predicate)
Notify waiting threads of the event that satisfies the given predicate; Relaxed version.
void abort_all_relaxed()
Abort any sleeping threads at the time of the call; Relaxed version.
thread_context * to_thread_context(waitset_node_t *n)
void notify_all()
Notify all waiting threads of the event.
void wait(WaitUntil until, Context on)
Wait for a condition to be satisfied with waiting-on context.
void notify_all_relaxed()
Notify all waiting threads of the event; Relaxed version.
void notify(const P &predicate)
Notify waiting threads of the event that satisfies the given predicate.
__TBB_atomic size_t count
tbb::atomic< bool > in_waitset
Represents acquisition of a mutex.
__TBB_NOINLINE(void init())
The method for lazy initialization of the thread_context's semaphore.
binary_semaphore for concurrent monitor
Base class for types that should not be copied or assigned.
void cancel_wait(thread_context &thr)
Cancel the wait. Removes the thread from the wait queue if not removed yet.
void atomic_fence()
Sequentially consistent full memory fence.
void remove(node_t &n)
remove node 'n'
void abort_all()
Abort any sleeping threads at the time of the call.
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
T __TBB_load_relaxed(const volatile T &location)
void throw_exception(exception_id eid)
Versionless convenience wrapper for throw_exception_v4()
bool commit_wait(thread_context &thr)
Commit wait if event count has not changed; otherwise, cancel wait.