Event Mutex的问题 在Win32平台中Event和Mutex用来完成互斥和同步的功能。不过我始终没有搞清它们的用法。哪位能给小弟说说? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Event是一个线程通知另一个线程用的,是单向的。一方接收,其它方可以发送。一般用在单纯的同步上,就是一个操作要等待另一个操作完成时用的,双方地位并不平等。Mutex是用于资源控制用的,对于同一个资源,一次只能有一人可以对资源进行访问。双方的地位是平等的。Mutex比Event复杂一点,可以用Mutex实现Event的功能。对于楼上说的手动通知另一个进程同步,用Event就可以了。 用API:WaitForSigleObject,WaitForMultiObjects......使需要同步的线程阻塞,然后执行别的操作,根据需要激活事件或信号或互斥等对象,阻塞的线程接到通知将继续执行 要手动改变事件状态,在创建CreateEvent时,要指定bManualReset为TRUE改变状态用SetEvent;ResetEvent;《WIN32多线程程序设计》上讲的很清楚,建议你去买一本,很有用。 这对WIndows编程很重要的!CRITICALSECTION、Mutex、event还有个信号,建议你仔细学学吧! 线程通讯在Windows编程是很重要的!4个对象CriticalSection,mutex,event还有个信号,4个重要函数WaittingForSingleObject,WaittingForMultiObject,WaittingForSingleObjectEx,WaittingForMultiObjectEx兄弟好好看看书吧! MUTEX互斥(体)就是一个资源在同一时间只能被一个线程所访问 Mutex] 是互斥(体)就是一个资源在同一时间只能被一个线程所访问::CreateMutex(NULL, TRUE, m_pszExeName); 给你举个简单例子吧(Event)首先用CreateEvent创建一个事件,然后有两个同时运行的线程:线程1 线程2...... ............ 动作1...... ResetEvent(信号的初期化)动作2 WaitForXXXXObject(等待动作2的结束)SetEvent(信号的改变) 动作3...... ......假如你想执行的流程是动作1--〉动作2--〉动作3,那么你就可以用上面的方法来进行同步控制了。Mutex的例子:首先用CreateMutex创建一个Mutex,然后存在一个在同一时间内只能运行一次的资源(可以是对象,代码段等等),那么互斥的代码就可以这么写:......OpenMutex(对资源加锁)资源1ReleaseMutex(对资源解锁)......这样如果有好几个同时运行的线程都要用到资源1的时候,就可以调用上面的代码,来保证资源1的互斥执行了。 那么是说如果一个MUTEX对象已经被某个进程打开的话,另一个进程在调用OpenMutex时就会等到前一个进程释放后才会返回吗? 那么是说如果一个MUTEX对象已经被某个进程打开的话,另一个进程在调用OpenMutex时就会等到前一个进程释放后才会返回吗? znormal(香烟与啤酒)帖子的订正:......OpenMutex(对资源加锁)-〉WaitForSigleObject(对资源的加锁)资源1ReleaseMutex(对资源解锁)......抱歉! 调用DLL问题 用鼠标拖拽应聘文件到Edit控件中,如何响应 谁能帮我提出一个有市场的软件项目,我想利用业余时间完成该项目 初学者的RadioButton问题 VC中按钮只有单击双击事件,怎样实现VB中的鼠标DOWN Up 事件? 急!!!先行谢过! WINDOWS有提供对802.11协议的支持吗 菜鸟问题,求助!! 改变子窗口的视 VC实现hough变换检测多条直线 急 急 急 字符编码的问题 求助:内存泄露! 请问CImageList::Detach有何用处?
使需要同步的线程阻塞,然后执行别的操作,根据需要激活事件或信号或互斥等对象,阻塞的线程接到通知将继续执行
改变状态用SetEvent;ResetEvent;
《WIN32多线程程序设计》上讲的很清楚,建议你去买一本,很有用。
建议你仔细学学吧!
CriticalSection,mutex,event还有个信号,
4个重要函数WaittingForSingleObject,
WaittingForMultiObject,
WaittingForSingleObjectEx,
WaittingForMultiObjectEx
兄弟好好看看书吧!
::CreateMutex(NULL, TRUE, m_pszExeName);
首先用CreateEvent创建一个事件,然后有两个同时运行的线程:线程1 线程2
...... ......
...... 动作1
...... ResetEvent(信号的初期化)
动作2 WaitForXXXXObject(等待动作2的结束)
SetEvent(信号的改变) 动作3
...... ......假如你想执行的流程是动作1--〉动作2--〉动作3,那么你就可以用上面的方法来进行同步控制了。Mutex的例子:
首先用CreateMutex创建一个Mutex,然后存在一个在同一时间内只能运行一次的资源(可以是对象,代码段等等),那么互斥的代码就可以这么写:......
OpenMutex(对资源加锁)
资源1
ReleaseMutex(对资源解锁)
......这样如果有好几个同时运行的线程都要用到资源1的时候,就可以调用
上面的代码,来保证资源1的互斥执行了。
......
OpenMutex(对资源加锁)-〉WaitForSigleObject(对资源的加锁)
资源1
ReleaseMutex(对资源解锁)
......
抱歉!