⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mutex.h

📁 SP是一个基于GNU C++编译器
💻 H
字号:
// Copyright (c) 1996 James Clark// See the file copying.txt for copying permission.#ifndef Mutex_INCLUDED#define Mutex_INCLUDED 1#ifdef SP_MUTEX_WIN32#define SP_MUTEX#define STRICT 1#include <windows.h>// <windows.h> appears to turn these warnings back on#ifdef _MSC_VER#pragma warning ( disable : 4237 )#endif#ifdef SP_NAMESPACEnamespace SP_NAMESPACE {#endifclass Mutex {public:  class Lock {  public:    Lock(Mutex *mp) : mp_(mp) {      if (mp) ::EnterCriticalSection(&mp->cs_);    }    ~Lock() {      if (mp_) ::LeaveCriticalSection(&mp_->cs_);    }  private:    Mutex *mp_;  };  Mutex() {    ::InitializeCriticalSection(&cs_);  }  ~Mutex() {    ::DeleteCriticalSection(&cs_);  }  friend class Lock;private:  CRITICAL_SECTION cs_;};#ifdef SP_NAMESPACE}#endif#endif /* SP_MUTEX_WIN32 */#ifdef SP_MUTEX_MACH#define SP_MUTEX#ifdef SP_NAMESPACEnamespace SP_NAMESPACE {#endif#ifdef SP_NAMESPACE}#endif#endif /* SP_MUTEX_MACH */#ifdef SP_MUTEX_PTHREADS// Support for pthreads on Linux.// Written by Matthias Clasen <clasen@mathematik.uni-freiburg.de>#define SP_MUTEX#ifdef SP_NAMESPACEnamespace SP_NAMESPACE {#endifextern "C" {#include <pthread.h>}class Mutex {public:  class Lock {  // Lock serves to automatically unlock Mutex, however control leaves  // a block. Don't let any "warning: unused variable `class Mutex::Lock lock'"  // mislead you; hopefully your compiler won't optimise this away...  public:    Lock(Mutex *mp) : mp_(mp) { if (mp_) pthread_mutex_lock  (&mp_->cs_); }    ~Lock()                   { if (mp_) pthread_mutex_unlock(&mp_->cs_); }  private:    Mutex *mp_;  };  Mutex()  { pthread_mutex_init (&cs_, NULL); }  ~Mutex() { pthread_mutex_destroy (&cs_); }  friend class Lock;private:  pthread_mutex_t cs_;};#ifdef SP_NAMESPACE}#endif#endif /* SP_MUTEX_PTHREADS */#ifndef SP_MUTEX#ifdef SP_NAMESPACEnamespace SP_NAMESPACE {#endifclass Mutex {public:  class Lock {  public:    Lock(Mutex *) { }  };  Mutex() { }};#ifdef SP_NAMESPACE}#endif#endif /* not SP_MUTEX */#endif /* not Mutex_INCLUDED */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -