1 /* 2 * Copyright 2010-2019 Branimir Karadzic. All rights reserved. 3 * License: https://github.com/bkaradzic/bx#license-bsd-2-clause 4 */ 5 6 #ifndef BX_MUTEX_H_HEADER_GUARD 7 #define BX_MUTEX_H_HEADER_GUARD 8 9 #include "bx.h" 10 11 namespace bx 12 { 13 /// 14 class Mutex 15 { 16 BX_CLASS(Mutex 17 , NO_COPY 18 , NO_ASSIGNMENT 19 ); 20 21 public: 22 /// 23 Mutex(); 24 25 /// 26 ~Mutex(); 27 28 /// 29 void lock(); 30 31 /// 32 void unlock(); 33 34 private: 35 BX_ALIGN_DECL(16, uint8_t) m_internal[64]; 36 }; 37 38 /// 39 class MutexScope 40 { 41 BX_CLASS(MutexScope 42 , NO_DEFAULT_CTOR 43 , NO_COPY 44 , NO_ASSIGNMENT 45 ); 46 47 public: 48 /// 49 MutexScope(Mutex& _mutex); 50 51 /// 52 ~MutexScope(); 53 54 private: 55 Mutex& m_mutex; 56 }; 57 58 } // namespace bx 59 60 #include "inline/mutex.inl" 61 62 #endif // BX_MUTEX_H_HEADER_GUARD 63