////////////////////////////////////////////////////////////////////////////
// CSemaphore クラスのインタフェース宣言
//
// Solaris上でセマフォを実装する。
////////////////////////////////////////////////////////////////////////////

#if !defined( SEMAPHORE_H_INCLUDED_ )
#define SEMAPHORE_H_INCLUDED_

#include <pthread.h>
#include <semaphore.h>

class CSemaphore
{
public:
	CSemaphore( int argMaxCount );
	~CSemaphore();

	// Ｐ操作
	void P();	// 待ち合わせる

	// Ｖ操作
	void V();	// 解放する

	// 占有出来るなら占有する
	bool Try();

	// 最大待ち時間を指定して待ち合わせる
	bool WaitForTime( int ms );

protected:
	sem_t m_Semaphore;	// セマフォ
	int MaxCount;	// セマフォの最大値
};

#endif // SEMAPHORE_H_INCLUDED_

