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