Mercurial > hg > vampy
annotate Mutex.h @ 92:a6718f9fe942
If a module appears to redefine one of our own types, refuse to load it. Also clear out the class dict for all refused modules now, so that we don't get stale names on the next scan due to not having cleared the module on unload
author | Chris Cannam |
---|---|
date | Mon, 14 Jan 2019 16:19:44 +0000 |
parents | 27bab3a16c9a |
children |
rev | line source |
---|---|
fazekasgy@37 | 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ |
fazekasgy@37 | 2 |
fazekasgy@37 | 3 /* |
fazekasgy@37 | 4 Basic cross-platform mutex abstraction class. |
fazekasgy@37 | 5 This file copyright 2007 Chris Cannam. |
fazekasgy@37 | 6 */ |
fazekasgy@37 | 7 |
fazekasgy@37 | 8 #ifndef _MUTEX_H_ |
fazekasgy@37 | 9 #define _MUTEX_H_ |
fazekasgy@37 | 10 |
fazekasgy@37 | 11 #ifdef _WIN32 |
fazekasgy@37 | 12 #include <windows.h> |
fazekasgy@37 | 13 #else |
fazekasgy@37 | 14 #include <pthread.h> |
fazekasgy@37 | 15 #endif |
fazekasgy@37 | 16 |
fazekasgy@37 | 17 class Mutex |
fazekasgy@37 | 18 { |
fazekasgy@37 | 19 public: |
fazekasgy@37 | 20 Mutex(); |
fazekasgy@37 | 21 ~Mutex(); |
fazekasgy@37 | 22 |
fazekasgy@37 | 23 void lock(); |
fazekasgy@37 | 24 void unlock(); |
fazekasgy@37 | 25 bool trylock(); |
fazekasgy@37 | 26 |
fazekasgy@37 | 27 private: |
fazekasgy@37 | 28 #ifdef _WIN32 |
fazekasgy@37 | 29 HANDLE m_mutex; |
fazekasgy@37 | 30 #ifndef NO_THREAD_CHECKS |
fazekasgy@37 | 31 DWORD m_lockedBy; |
fazekasgy@37 | 32 #endif |
fazekasgy@37 | 33 #else |
fazekasgy@37 | 34 pthread_mutex_t m_mutex; |
fazekasgy@37 | 35 #ifndef NO_THREAD_CHECKS |
fazekasgy@37 | 36 pthread_t m_lockedBy; |
fazekasgy@37 | 37 bool m_locked; |
fazekasgy@37 | 38 #endif |
fazekasgy@37 | 39 #endif |
fazekasgy@37 | 40 }; |
fazekasgy@37 | 41 |
fazekasgy@37 | 42 class MutexLocker |
fazekasgy@37 | 43 { |
fazekasgy@37 | 44 public: |
fazekasgy@37 | 45 MutexLocker(Mutex *); |
fazekasgy@37 | 46 ~MutexLocker(); |
fazekasgy@37 | 47 |
fazekasgy@37 | 48 private: |
fazekasgy@37 | 49 Mutex *m_mutex; |
fazekasgy@37 | 50 }; |
fazekasgy@37 | 51 |
fazekasgy@37 | 52 #endif |
fazekasgy@37 | 53 |