📄 mutex.cpp
字号:
/***************************************************//*! \class Mutex \brief STK mutex class. This class provides a uniform interface for cross-platform mutex use. On Linux and IRIX systems, the pthread library is used. Under Windows, critical sections are used. by Perry R. Cook and Gary P. Scavone, 1995 - 2005.*//***************************************************/#include "Mutex.h"#if !defined(SYMBIAN)Mutex :: Mutex(){#if (defined(__OS_IRIX__) || defined(__OS_LINUX__) || defined(__OS_MACOSX__)) pthread_mutex_init(&mutex_, NULL); pthread_cond_init(&condition_, NULL);#elif defined(__OS_WINDOWS__) InitializeCriticalSection(&mutex_); condition_ = CreateEvent(NULL, // no security true, // manual-reset false, // non-signaled initially NULL); // unnamed#endif }Mutex :: ~Mutex(){#if (defined(__OS_IRIX__) || defined(__OS_LINUX__) || defined(__OS_MACOSX__)) pthread_mutex_destroy(&mutex_); pthread_cond_destroy(&condition_);#elif defined(__OS_WINDOWS__) DeleteCriticalSection(&mutex_); CloseHandle( condition_ );#endif }void Mutex :: lock(){#if (defined(__OS_IRIX__) || defined(__OS_LINUX__) || defined(__OS_MACOSX__)) pthread_mutex_lock(&mutex_);#elif defined(__OS_WINDOWS__) EnterCriticalSection(&mutex_);#endif }void Mutex :: unlock(){#if (defined(__OS_IRIX__) || defined(__OS_LINUX__) || defined(__OS_MACOSX__)) pthread_mutex_unlock(&mutex_);#elif defined(__OS_WINDOWS__) LeaveCriticalSection(&mutex_);#endif }void Mutex :: wait(){#if (defined(__OS_IRIX__) || defined(__OS_LINUX__) || defined(__OS_MACOSX__)) pthread_cond_wait(&condition_, &mutex_);#elif defined(__OS_WINDOWS__) WaitForMultipleObjects(1, &condition_, false, INFINITE);#endif }void Mutex :: signal(){#if (defined(__OS_IRIX__) || defined(__OS_LINUX__) || defined(__OS_MACOSX__)) pthread_cond_signal(&condition_);#elif defined(__OS_WINDOWS__) SetEvent( condition_ );#endif }#endif // SYMBIAN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -