deba@979: /* -*- mode: C++; indent-tabs-mode: nil; -*- deba@979: * deba@979: * This file is a part of LEMON, a generic C++ optimization library. deba@979: * alpar@1092: * Copyright (C) 2003-2013 deba@979: * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport deba@979: * (Egervary Research Group on Combinatorial Optimization, EGRES). deba@979: * deba@979: * Permission to use, modify and distribute this software is granted deba@979: * provided that this copyright notice appears in all copies. For deba@979: * precise terms see the accompanying LICENSE file. deba@979: * deba@979: * This software is provided "AS IS" with no warranty of any kind, deba@979: * express or implied, and with no claim as to its suitability for any deba@979: * purpose. deba@979: * deba@979: */ deba@979: deba@979: #ifndef LEMON_BITS_LOCK_H deba@979: #define LEMON_BITS_LOCK_H deba@979: deba@979: #include deba@979: #if defined(LEMON_USE_PTHREAD) deba@979: #include deba@979: #elif defined(LEMON_USE_WIN32_THREADS) deba@979: #include deba@979: #endif deba@979: deba@979: namespace lemon { deba@979: namespace bits { deba@979: deba@979: #if defined(LEMON_USE_PTHREAD) deba@979: class Lock { deba@979: public: deba@979: Lock() { alpar@1092: pthread_mutex_init(&_lock, 0); deba@979: } deba@979: ~Lock() { alpar@1092: pthread_mutex_destroy(&_lock); deba@979: } deba@979: void lock() { alpar@1092: pthread_mutex_lock(&_lock); deba@979: } deba@979: void unlock() { alpar@1092: pthread_mutex_unlock(&_lock); deba@979: } deba@979: deba@979: private: deba@979: pthread_mutex_t _lock; deba@979: }; deba@979: #elif defined(LEMON_USE_WIN32_THREADS) deba@979: class Lock : public WinLock {}; deba@979: #else deba@979: class Lock { deba@979: public: deba@979: Lock() {} deba@979: ~Lock() {} deba@979: void lock() {} deba@979: void unlock() {} alpar@1092: }; deba@979: #endif deba@979: } deba@979: } deba@979: deba@979: #endif