19 #if !defined(__TBB_show_deprecation_message_mutex_H) && defined(__TBB_show_deprecated_header_message) 20 #define __TBB_show_deprecation_message_mutex_H 21 #pragma message("TBB Warning: tbb/mutex.h is deprecated. For details, please see Deprecated Features appendix in the TBB reference manual.") 24 #if defined(__TBB_show_deprecated_header_message) 25 #undef __TBB_show_deprecated_header_message 31 #define __TBB_mutex_H_include_area 53 #if TBB_USE_ASSERT || TBB_USE_THREADING_TOOLS 57 InitializeCriticalSectionEx(&impl, 4000, 0);
59 int error_code = pthread_mutex_init(&impl,NULL);
71 DeleteCriticalSection(&impl);
73 pthread_mutex_destroy(&impl);
80 friend class scoped_lock;
85 class scoped_lock : internal::no_copy {
88 scoped_lock() : my_mutex(NULL) {};
91 scoped_lock( mutex& mutex ) {
104 internal_acquire(mutex);
112 bool try_acquire( mutex& mutex ) {
114 return internal_try_acquire (mutex);
116 bool result = mutex.try_lock();
150 static const bool is_rw_mutex =
false;
151 static const bool is_recursive_mutex =
false;
152 static const bool is_fair_mutex =
false;
159 aligned_space<scoped_lock> tmp;
160 new(tmp.begin()) scoped_lock(*
this);
163 EnterCriticalSection(&impl);
165 int error_code = pthread_mutex_lock(&impl);
176 aligned_space<scoped_lock> tmp;
177 scoped_lock&
s = *tmp.begin();
179 return s.internal_try_acquire(*
this);
182 return TryEnterCriticalSection(&impl)!=0;
184 return pthread_mutex_trylock(&impl)==0;
192 aligned_space<scoped_lock> tmp;
193 scoped_lock&
s = *tmp.begin();
195 s.internal_release();
198 LeaveCriticalSection(&impl);
200 pthread_mutex_unlock(&impl);
207 typedef LPCRITICAL_SECTION native_handle_type;
209 typedef pthread_mutex_t* native_handle_type;
211 native_handle_type native_handle() {
return (native_handle_type) &impl; }
220 CRITICAL_SECTION impl;
223 pthread_mutex_t impl;
235 void set_state( state_t to ) { state = to; }
244 #undef __TBB_mutex_H_include_area class __TBB_DEPRECATED_IN_VERBOSE_MODE_MSG("tbb::aligned_space is deprecated, use std::aligned_storage") aligned_space
Block of space aligned sufficiently to construct an array T with N elements.
#define __TBB_DEFINE_PROFILING_SET_NAME(sync_object_type)
void __TBB_EXPORTED_FUNC handle_perror(int error_code, const char *aux_info)
Throws std::runtime_error with what() returning error_code description prefixed with aux_info.
void const char const char int ITT_FORMAT __itt_group_sync s
#define __TBB_EXPORTED_METHOD
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 * lock