当前位置:网站首页>MFC多线程 信号量CSemaphore 临界区与互斥 事件

MFC多线程 信号量CSemaphore 临界区与互斥 事件

2022-06-24 06:41:00 小黄人软件

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指定资源的线程的计数

原网站

版权声明
本文为[小黄人软件]所创,转载请带上原文链接,感谢
https://blog.csdn.net/chenhao0568/article/details/125421973