一、
1
2
3
4
|
CEvent(
BOOL
bInitiallyOwn=FALSE,
BOOL
bManualReset=FALSE,
LPCTSTR
lpszName=NULL,
LPSECURITY_ATTRIBUTES lpsaAttribute=NULL);
|
二、BOOL CEvent::SetEvent();
三、BOOL CEvent::ResetEvent();
1
2
3
4
5
6
|
CSemaphore(
LONG
lInitialCount = 1,
LONG
lMaxCount = 1,
LPCTSTR
pstrName = NULL,
LPSECURITY_ATTRIBUTES lpsaAttributes = NULL
);
|
通常是將當前可用資源計數設置爲最大資源計數,每增長一個線程對共享資源的訪問,當前可用資源計數就減1,只要當前可用資源計數大於0,就能夠發出信號量信號。若是爲0,則放入一個隊列中等待。線程在處理完共享資源後,應在離開的同時經過ReleaseSemaphore()函數將當前可用資源數加1。網絡
1
2
3
|
BOOL
ReleaseSemaphore(
HANDLE
hSemaphore,
// hSemaphore:信號量句柄
LONG
lReleaseCount,
// lReleaseCount:信號量計數值
LPLONG
lpPreviousCount
// 參數通常爲NULL);
|