CMutex, CCriticalSection用于对资源的互斥访问。
CMutex可以跨进程使用, CCriticalSection只可以在进程内部使用。
创建CMutex需要更多的资源,只用于进程内部时使用CCriticalSection获得更高的效率。
CCriticalSection m_CritSection;//用于临界区 方法一
CSingleLock singleLock(&m_CritSection); //
//CMutex Mutex;//用于互斥锁 方法二
//CSingleLock singleLock(&Mutex); //
int StartMainLock()
{
singleLock.Lock();//没被调用就上锁自己用,已被调用就等着
if (singleLock.IsLocked())
{
int ret=StartMain(); //被锁的 处理内容
singleLock.Unlock();//解锁 所有返回之前解锁
return ret;
}
singleLock.Unlock();//解锁
return -1;
}
//事件
HANDLE m_hEvent= CreateEvent(NULL, FALSE, FALSE, NULL); //新建
WaitForSingleObject(m_hEvent, INFINITE); //无限时间等待
ResetEvent(m_hEvent); 重置 为无信号
SetEvent(m_hEvent); //设置有信号
CloseHandle(m_hEvent); //关闭
CSemaphore指定资源的线程的计数