⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex5.h

📁 主要涉及windows操作系统内存和多线程的设计
💻 H
字号:
class PV
{
private:
	HANDLE h_Event;	
	HANDLE h_Event2;
public:
	int c;
	PV(LPCTSTR lpName,LPCTSTR lpName2)
	{
       LPSECURITY_ATTRIBUTES lpEventAttributes =NULL; // pointer to security attributes
	   BOOL bManualReset = FALSE;  // flag for manual-reset event
	   BOOL bInitialState = TRUE; // flag for initial state

       h_Event=CreateEvent(
		lpEventAttributes,			// pointer to security attributes
		bManualReset,				// flag for manual-reset event
		bInitialState,				// flag for initial state
		lpName						// pointer to event-object name
		);
      bInitialState = FALSE; // flag for initial state
	  h_Event2=CreateEvent(
		lpEventAttributes,			// pointer to security attributes
		bManualReset,				// flag for manual-reset event
		bInitialState,				// flag for initial state
		lpName2						// pointer to event-object name
		);
	  c=1;
	}

	~PV()
	{
	CloseHandle(h_Event);
	CloseHandle(h_Event2);
	}

	void wait()
	{
       WaitForSingleObject( h_Event,INFINITE);
	   c--;	//资源减1
	if(c<0)
	{
		SetEvent(h_Event);	//signal(S1);
		WaitForSingleObject( h_Event2,INFINITE);	//wait(S2);
	}
	    SetEvent(h_Event);	//signal(S1);
	}


	void single()
	{
      WaitForSingleObject( h_Event,INFINITE);
	c++;	//资源加1
	if(c<=0)
	{
		SetEvent(h_Event2);	//signal(S2);
	}
	else
	{
		SetEvent(h_Event);	//signal(S2);
	}
	}
};









⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -