1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #ifndef THREAD_SAFE_H
- #define THREAD_SAFE_H
- #include "core/os/mutex.h"
- class ThreadSafe {
- Mutex *mutex;
- public:
- inline void lock() const {
- if (mutex) mutex->lock();
- }
- inline void unlock() const {
- if (mutex) mutex->unlock();
- }
- ThreadSafe();
- ~ThreadSafe();
- };
- class ThreadSafeMethod {
- const ThreadSafe *_ts;
- public:
- ThreadSafeMethod(const ThreadSafe *p_ts) {
- _ts = p_ts;
- _ts->lock();
- }
- ~ThreadSafeMethod() { _ts->unlock(); }
- };
- #ifndef NO_THREADS
- #define _THREAD_SAFE_CLASS_ ThreadSafe __thread__safe__;
- #define _THREAD_SAFE_METHOD_ ThreadSafeMethod __thread_safe_method__(&__thread__safe__);
- #define _THREAD_SAFE_LOCK_ __thread__safe__.lock();
- #define _THREAD_SAFE_UNLOCK_ __thread__safe__.unlock();
- #else
- #define _THREAD_SAFE_CLASS_
- #define _THREAD_SAFE_METHOD_
- #define _THREAD_SAFE_LOCK_
- #define _THREAD_SAFE_UNLOCK_
- #endif
- #endif
|