All pastes #181790 Raw Edit

napa3um

public cpp v1 · immutable
#181790 ·published 2006-09-25 12:24 UTC
rendered paste body
typedef struct tagMYCRITSECT{	BOOL bIn;	HANDLE hNeedToWakeUp[128];	int iThreadsCount;} MYCRITSECT; *LPMYCRITSECT;LPMYCRITSECT CreateCritSect(){	return GlobalAlloc(GPTR, sizeof(MYCRITSECT));}void EnterCritSect(LPMYCRITSECT CritSect){	if(CritSect->bIn)	{		CritSect->hNeedToWakeUp[CritSect->iThreadsCount ++] = GetCurrentThread();		SuspendThread(GetCurrentThread()); // = Sleep(INFINITE); but not WinCE	}	else		CritSect->bIn = TRUE;}void LeaveCritSect(LPMYCRITSECT CritSect){	if(CritSect->iThreadsCount)		ResumeThread(hNeedToWakeUp[CritSect->iThreadsCount --])	else		bIn = FALSE;}