ex5.h

来自「软件课程设计代码」· C头文件 代码 · 共 72 行

H
72
字号
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 + =
减小字号Ctrl + -
显示快捷键?