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

📄 mutex.hpp

📁 CGAL is a collaborative effort of several sites in Europe and Israel. The goal is to make the most i
💻 HPP
字号:
// Copyright (C) 2000 Stephen Cleary//// Distributed under the Boost Software License, Version 1.0. (See// accompanying file LICENSE_1_0.txt or copy at// http://www.boost.org/LICENSE_1_0.txt)//// See http://www.boost.org for updates, documentation, and revision history.#ifndef BOOST_POOL_MUTEX_HPP#define BOOST_POOL_MUTEX_HPP#include <boost/config.hpp>  // for workarounds// Extremely Light-Weight wrapper classes for OS thread synchronization// Configuration: for now, we just choose between pthread or Win32 mutexes or none#define BOOST_MUTEX_HELPER_NONE         0#define BOOST_MUTEX_HELPER_WIN32        1#define BOOST_MUTEX_HELPER_PTHREAD      2#ifdef BOOST_NO_MT  // No multithreading -> make locks into no-ops  #define BOOST_MUTEX_HELPER BOOST_MUTEX_HELPER_NONE#else  #ifdef BOOST_WINDOWS    #define BOOST_MUTEX_HELPER BOOST_MUTEX_HELPER_WIN32  #else    #include <unistd.h>    #ifdef _POSIX_THREADS      #define BOOST_MUTEX_HELPER BOOST_MUTEX_HELPER_PTHREAD    #endif  #endif#endif#ifndef BOOST_MUTEX_HELPER  #error Unable to determine platform mutex type; define BOOST_NO_MT to assume single-threaded#endif#ifdef BOOST_WINDOWS  #include <windows.h>#endif#ifdef _POSIX_THREADS  #include <pthread.h>#endifnamespace boost {namespace details {namespace pool {#ifdef BOOST_WINDOWSclass win32_mutex{  private:    CRITICAL_SECTION mtx;    win32_mutex(const win32_mutex &);    void operator=(const win32_mutex &);  public:    win32_mutex()    { InitializeCriticalSection(&mtx); }    ~win32_mutex()    { DeleteCriticalSection(&mtx); }    void lock()    { EnterCriticalSection(&mtx); }    void unlock()    { LeaveCriticalSection(&mtx); }};#endif // defined(BOOST_WINDOWS)#ifdef _POSIX_THREADSclass pthread_mutex{  private:    pthread_mutex_t mtx;    pthread_mutex(const pthread_mutex &);    void operator=(const pthread_mutex &);  public:    pthread_mutex()    { pthread_mutex_init(&mtx, 0); }    ~pthread_mutex()    { pthread_mutex_destroy(&mtx); }    void lock()    { pthread_mutex_lock(&mtx); }    void unlock()    { pthread_mutex_unlock(&mtx); }};#endif // defined(_POSIX_THREADS)class null_mutex{  private:    null_mutex(const null_mutex &);    void operator=(const null_mutex &);  public:    null_mutex() { }    static void lock() { }    static void unlock() { }};#if BOOST_MUTEX_HELPER == BOOST_MUTEX_HELPER_NONE  typedef null_mutex default_mutex;#elif BOOST_MUTEX_HELPER == BOOST_MUTEX_HELPER_WIN32  typedef win32_mutex default_mutex;#elif BOOST_MUTEX_HELPER == BOOST_MUTEX_HELPER_PTHREAD  typedef pthread_mutex default_mutex;#endif} // namespace pool} // namespace details} // namespace boost#undef BOOST_MUTEX_HELPER_WIN32#undef BOOST_MUTEX_HELPER_PTHREAD#undef BOOST_MUTEX_HELPER_NONE#undef BOOST_MUTEX_HELPER#endif

⌨️ 快捷键说明

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