📄 ex5.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 + -