线程被释放是什么意思啊?

vc中SetEvent设置事件的状态为有标记,释放任意等待线程。这句话什么意思啊?有标记和释放是什么意思啊?怎么理解啊,拜托了... vc中SetEvent设置事件的状态为有标记,释放任意等待线程。这句话什么意思啊?
有标记和释放是什么意思啊?怎么理解啊,拜托了
展开
 我来答
空雪梦见
推荐于2017-12-19 · TA获得超过5598个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1213万
展开全部
一个线程在event对象上调用WaitForSingleObject
如果这个对象状态是有标记的,那么这个调用马上返回
如果这个对象状态是没有标记的,那么操作系统会将调用的线程暂停运行

当一个对象的状态由没有标记变为有标记,操作系统会恢复所有因为“在等待event对象变为有标记状态”而暂停运行的线程
更多追问追答
追问
谢谢,但是我的问题还没有解决,我的问题是:如果对象状态是没有标记的,那么线程就不能启动只能WaitForSingleObject等待,当一个对象的状态由没有标记变为有标记,那么所有的线程就调用WaitForSingleObject开抢,哪个线程抢到了就可以启动哪个线程,是这样的意思么?
追答
不是。SetEvent以后所有线程就都被唤醒了。Event不是Semaphore,不会有“哪个线程抢到”的问题。它不需要抢,它只是一种状态

对于自动重置事件,msdn上有这样的说明

When the state of an auto-reset event object is signaled, it remains signaled
until a single waiting thread is released; the system then automatically resets
the state to nonsignaled. If no threads are waiting, the event object's state
remains signaled.
详细情况我不是很清楚,因为自己没用过。不过Windows并发编程指南这本书上似乎有专门对这种情况给了什么解说,书现在放在学校机房里没在身边,暂时没法查……如果一定要知道自动重置事件在这里有什么独特的行为的话我明天过去的时候查?
miije
2017-12-19 · TA获得超过349个赞
知道小有建树答主
回答量:664
采纳率:70%
帮助的人:286万
展开全部
一个程序可以有多个线程,每个线程都独立执行,线程执行完就被释放掉了,如果有标记或者信号量卡在线程就会一直在那,等待继续执行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式