17 #ifndef _TBB_governor_H 18 #define _TBB_governor_H 21 #include "../rml/include/rml_tbb.h" 26 #if __TBB_SURVIVE_THREAD_SWITCH 34 class generic_scheduler;
154 #if __TBB_SURVIVE_THREAD_SWITCH
static generic_scheduler * tls_scheduler_of(uintptr_t v)
Converts TLS value to the scheduler pointer.
static void sign_off(generic_scheduler *s)
Unregister TBB scheduler instance from thread-local storage.
Work stealing task scheduler.
static void terminate_auto_initialized_scheduler()
Undo automatic initialization if necessary; call when a thread exits.
int AvailableHwConcurrency()
Returns maximal parallelism level supported by the current OS configuration.
static void one_time_init()
static generic_scheduler * init_scheduler(int num_threads, stack_size_type stack_size, bool auto_init)
Processes scheduler initialization request (possibly nested) in a master thread.
static basic_tls< uintptr_t > theTLS
TLS for scheduler instances associated with individual threads.
static void assume_scheduler(generic_scheduler *s)
Temporarily set TLS slot to the given scheduler.
size_t DefaultSystemPageSize()
Returns OS regular memory page size.
static void sign_on(generic_scheduler *s)
Register TBB scheduler instance in thread-local storage.
static unsigned default_num_threads()
static unsigned DefaultNumberOfThreads
Caches the maximal level of parallelism supported by the hardware.
static rml::tbb_factory theRMLServerFactory
static void acquire_resources()
Create key for thread-local storage and initialize RML.
std::size_t stack_size_type
static generic_scheduler * local_scheduler()
Obtain the thread-local instance of the TBB scheduler.
static void print_version_info()
static uintptr_t tls_value_of(generic_scheduler *s)
Computes the value of the TLS.
static void auto_terminate(void *scheduler)
The internal routine to undo automatic initialization.
static bool is_rethrow_broken
static void initialize_rml_factory()
static bool is_set(generic_scheduler *s)
Used to check validity of the local scheduler TLS contents.
static bool is_speculation_enabled
static void release_resources()
Destroy the thread-local storage key and deinitialize RML.
static generic_scheduler * init_scheduler_weak()
Automatic initialization of scheduler in a master thread with default settings without arena.
The class handles access to the single instance of market, and to TLS to keep scheduler instances.
static bool does_client_join_workers(const tbb::internal::rml::tbb_client &client)
static rml::tbb_server * create_rml_server(rml::tbb_client &)
static generic_scheduler * local_scheduler_if_initialized()
static generic_scheduler * local_scheduler_weak()
static bool rethrow_exception_broken()
void const char const char int ITT_FORMAT __itt_group_sync s
static size_t default_page_size()
static bool terminate_scheduler(generic_scheduler *s, bool blocking)
Processes scheduler termination request (possibly nested) in a master thread.
static const int automatic
Typedef for number of threads that is automatic.
static bool UsePrivateRML
static size_t DefaultPageSize
Caches the size of OS regular memory page.
Class that supports TBB initialization.
static bool speculation_enabled()