#pragma once

//! @file Mix/CriticalSection.h
//! @brief クリティカルセクションクラスインクルードファイル

#include "Mix/Noncopyable.h"

namespace Mix{

	//! @class CriticalSection
	//! @brief クリティカルセクションクラス
	class _MIX_DLL_API CriticalSection : public Mix::Noncopyable
	{
	private:
		mutable CRITICAL_SECTION m_Sync;

	public:
		//! @brief コンストラクタ
		CriticalSection( void );
		//! @brief デストラクタ
		~CriticalSection( void );

		//! @brief クリティカルセクションに入ります
		void Enter( void ) const;
		//! @brief クリティカルセクションを出ます
		void Leave( void ) const;
	};

}
