mutex.cpp 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include "mutex.h"
  2. module::mutex::mutex()
  3. {
  4. }
  5. module::mutex::~mutex()
  6. {
  7. }
  8. void module::mutex::lock()
  9. {
  10. m_mutex.lock();
  11. }
  12. void module::mutex::unlock()
  13. {
  14. m_mutex.unlock();
  15. }
  16. bool module::mutex::try_lock()
  17. {
  18. return m_mutex.try_lock();
  19. }
  20. void module::mutex::regist(sol::state* lua)
  21. {
  22. lua->new_usertype<module::mutex>("mutex",
  23. "new", sol::constructors<module::mutex()>(),
  24. "lock", &module::mutex::lock,
  25. "unlock", &module::mutex::unlock,
  26. "try_lock", &module::mutex::try_lock,
  27. "self", &module::mutex::self
  28. );
  29. }
  30. void module::mutex::regist_global(const std::string& name, sol::state* lua)
  31. {
  32. lua->registry()[name] = this;
  33. (*lua)[name] = this;
  34. }
  35. module::auto_lock::auto_lock(module::mutex& mutex):m_mutex(&mutex)
  36. {
  37. m_mutex->lock();
  38. }
  39. module::auto_lock::~auto_lock()
  40. {
  41. m_mutex->unlock();
  42. }
  43. void module::auto_lock::regist(sol::state* lua)
  44. {
  45. lua->new_usertype<module::auto_lock>("auto_lock",
  46. "new", sol::constructors<module::auto_lock(module::mutex&)>()
  47. );
  48. }