#pragma once

//#include "CritSec.h"

namespace FDK
{
	//  クリティカルセクションを使った自動ロック／ロック解除。
	//  コンストラクタでロックをかけ、デストラクタで解除する。

	private class AutoLock
	{
	public:
		AutoLock( CritSec& crit )
		{
			this->m_pCriticalSection = &crit;
			this->m_pCriticalSection->Lock();
		}
		~AutoLock()
		{
			this->m_pCriticalSection->Unlock();
			//SAFE_DELETE( this->m_pCriticalSection );	// コンストラクタで外部から受け取ったので、newされたのかメンバなのか分からないので、ここでは解放しない。
		}

	private:
		CritSec *m_pCriticalSection;
	};
}
