//! Performs thread-safe lazy one-time general TBB initialization. void DoOneTimeInitializations() { suppress_unused_warning(_pad); __TBB_InitOnce::lock(); // No fence required for load of InitializationDone, because we are inside a critical section. if( !__TBB_InitOnce::InitializationDone ) { __TBB_InitOnce::add_ref(); if( GetBoolEnvironmentVariable("TBB_VERSION") ) PrintVersion(); bool itt_present = false; #if DO_ITT_NOTIFY ITT_DoUnsafeOneTimeInitialization(); itt_present = ITT_Present; #endif /* DO_ITT_NOTIFY */ initialize_cache_aligned_allocator(); governor::initialize_rml_factory(); Scheduler_OneTimeInitialization( itt_present ); // Force processor groups support detection governor::default_num_threads(); // Dump version data governor::print_version_info(); PrintExtraVersionInfo( "Tools support", itt_present ? "enabled" : "disabled" ); __TBB_InitOnce::InitializationDone = true; } __TBB_InitOnce::unlock(); }
//! Performs thread-safe lazy one-time general TBB initialization. void DoOneTimeInitializations() { __TBB_InitOnce::lock(); // No fence required for load of InitializationDone, because we are inside a critical section. if( !__TBB_InitOnce::InitializationDone ) { __TBB_InitOnce::add_ref(); if( GetBoolEnvironmentVariable("TBB_VERSION") ) PrintVersion(); bool have_itt = false; #if DO_ITT_NOTIFY ITT_DoUnsafeOneTimeInitialization(); have_itt = ITT_Present; #endif /* DO_ITT_NOTIFY */ initialize_cache_aligned_allocator(); #if __TBB_SURVIVE_THREAD_SWITCH initialize_survive_thread_switch(); #endif /* __TBB_SURVIVE_THREAD_SWITCH */ governor::print_version_info(); PrintExtraVersionInfo( "SCHEDULER", have_itt ? "default" : "Intel" ); Scheduler_OneTimeInitialization( have_itt ); __TBB_InitOnce::InitializationDone = true; } __TBB_InitOnce::unlock(); }