Newer
Older
Import / projects / Gameloft / glwebtools / include / glwebtools / os / glwebtools_mutex.h
@John John on 29 Dec 2020 638 bytes bulk import from macbookpro checkouts
#pragma once
#ifndef _GLWEBTOOLS_MUTEX_INCLUDED_
#define _GLWEBTOOLS_MUTEX_INCLUDED_

#include <glwebtools/internal/glwebtools_common.h>

namespace glwebtools
{

class Condition;

class Mutex : public NonCopyable
{
public:
	Mutex();
	~Mutex();
	
	void Lock();
	void Unlock();
	
	bool TryLock();
	
private:
	void* m_handler;

	friend class Condition;
};

struct LockScope : public NonCopyable
{
	LockScope(glwebtools::Mutex& mutex)
	:m_mutex(mutex)
	{
		m_mutex.Lock();
	}
	
	~LockScope()
	{
		m_mutex.Unlock();
	}
	
	glwebtools::Mutex& m_mutex;
};

}

#endif //_GLWEBTOOLS_MUTEX_INCLUDED_