mutex.cpp

来自「Mobile STK for Symbian OS V0.1」· C++ 代码 · 共 102 行

CPP
102
字号
/***************************************************//*! \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 + =
减小字号Ctrl + -
显示快捷键?