waitforsingleobject等待线程结束(如何等待线程结束)

:暂无数据 2026-10-12 14:50:05 :0

waitforsingleobject等待线程结束(如何等待线程结束)

今天给各位分享如何等待线程结束的知识,其中也会对如何等待线程结束进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录

如何等待线程结束

等待一个线程的结束
Win32 提供WaitForSingleObject()函数,其第一个参数是一个核心对象(如线程)的 handle。为方便讨论,把等待线程称为线程#1,把被等待线程称为线程#2。

调用 WaitForSingleObject()并放置一个“线程句柄”作为参数,将使线程#1开始睡眠,直到线程#2结束。像Sleep()函数一样,WaitForSingleObject()也有一个参数用来指定最长的等待时间。

DWORD WaitForSingleObject(
HANDLE hHandle,
DWORD dwMilliseconds
);
hHandle:等待对象的 handle(代表一个核心对象)。

dwMilliseconds:等待的最长时间。时间终了,即使 handle尚未成为激发状态,此函数也要返回。此值可以是0(代表立刻返回),也可以是 INFINITE代表无穷等待。

如果函数失败,返回WAIT_FAILED。这时可调用 GetLastError()取得更多信息。

此函数的成功有三个因素:

1. 等待的目标(核心对象)变成激发状态。返回值为WAIT_OBJECT_0。

2. 核心对象变成激发状态之前,等待时间终了。返回值为WAIT_TIMEOUT。

3. 如果一个拥有mutex(互斥器)的线程结束前没有释放mutex,则传回 WAIT_ABANDONED。(abandoned:废弃)

获得一个线程对象的 handle之后,WaitForSingleObject()要求操作系统让线程 #1 睡眠,直到以下任何一种情况发生:

1. 线程#2结束

2. dwMilliseconds时间终了。该值系从函数调用后开始计算。

由于操作系统持续追踪线程#2,即使线程#2 失事或被强迫结束,WaitForSingleObject()仍然能够正常运作。

如果想一直等待某个线程,直到线程退出,可以用如下代码:

WaitForSingleObject( hThrd, INFINITE );
关于time-out,有一个特别重要的用途,但很少被人注意。设定time-out为0,能够检查handle的状态并立刻返回,没有片刻停留。如果handle已经备妥,那么这个函数会成功并传回 WAIT_OBJECT_0。否则,这个函数立刻返回并传回 WAIT_TIMEOUT。

另外可以利用 time-out提供一个动画,表示正在等待某个线程的结束。可以每 500毫秒就time-out一次,更新图示,然后再继续等待。

WaitForSingleObject()可以面对许多种 handles工作,不一定非要是的线程 handle。事实上,Win32中大部分以HANDLE表示的对象都能够作为 WaitForSingleObject()的等待目标。视所拥有的对象不同,操作系统等待的事情也不一样。形式上来说,系统等待着这一对象“被激发”。

线程句柄作WaitForSingleObject的参数是什么意思

线程结束时,waitforsingleObject才有信号。
》》hThread1代表的线程如果在运行,就要一直等下去,直到线程退出来吗?
是否一直等下去,取决于第二个参数传入的内容。如下所示:
INFINITE:像你所使用的那样传入此参数,此函数会一直等待下去。
0 :函数检测对象状态并立即返回
》0 :如果超出等待时间,线程仍然处于非信号状态,将返回WAIT_TIMEOUT

怎样添加CEvent在MFC中,我想等线程A结束后再执行线程B,想用WaitForSingleObject来实现,

1. 创建CEvent实例
2. 在启动线程A时,将该实例传入线程A
3. 在线程A结束前,调用CEvent的SetEvent()成员

4. 在启动线程B的前面,等待CEvent的实例句柄
::WaitForSingleObject(pEvent-》m_hObject, INFINITE);

文章分享结束,waitforsingleobject等待线程结束和如何等待线程结束的答案你都知道了吗?欢迎再次光临本站哦!

waitforsingleobject等待线程结束(如何等待线程结束)

本文编辑:admin

本文相关文章:


在VC中,多线程如何调用类得成员函数?VC多线程

在VC中,多线程如何调用类得成员函数?VC多线程

今天给各位分享在VC中,多线程如何调用类得成员函数的知识,其中也会对在VC中,多线程如何调用类得成员函数进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月7日 04:10

更多文章:


栈先进先出还是先进后出(栈和队列有什么不同)

栈先进先出还是先进后出(栈和队列有什么不同)

本篇文章给大家谈谈栈先进先出还是先进后出,以及栈和队列有什么不同对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月15日 00:20

solitaire(谁能翻译westlife的solitaire翻译)

solitaire(谁能翻译westlife的solitaire翻译)

大家好,solitaire相信很多的网友都不是很明白,包括谁能翻译westlife的solitaire翻译也是一样,不过没有关系,接下来就来为大家分享关于solitaire和谁能翻译westlife的solitaire翻译的一些知识点,大家

2026年10月14日 23:50

begin again2(begin again什么意思)

begin again2(begin again什么意思)

大家好,关于begin again2很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于begin again什么意思的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助

2026年10月14日 23:10

shell脚本if判断多个条件(shell中if怎么判断多个条件)

shell脚本if判断多个条件(shell中if怎么判断多个条件)

今天给各位分享shell中if怎么判断多个条件的知识,其中也会对shell中if怎么判断多个条件进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 22:40

存储过程的优点是什么(存储过程是什么有什么用有什么优点)

存储过程的优点是什么(存储过程是什么有什么用有什么优点)

各位老铁们好,相信很多人对存储过程的优点是什么都不是特别的了解,因此呢,今天就来为大家分享下关于存储过程的优点是什么以及存储过程是什么有什么用有什么优点的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月14日 22:10

progressive trance(trance 与 techno 详细解释)

progressive trance(trance 与 techno 详细解释)

大家好,如果您还对progressive trance不太了解,没有关系,今天就由本站为大家分享progressive trance的知识,包括trance 与 techno 详细解释的问题都会给大家分析到,还望可以解决大家的问题,下面我们

2026年10月14日 21:50

电脑浏览器怎么返回到前一页?oppo手机如何返回上一页面

电脑浏览器怎么返回到前一页?oppo手机如何返回上一页面

大家好,返回上一页相信很多的网友都不是很明白,包括电脑浏览器怎么返回到前一页也是一样,不过没有关系,接下来就来为大家分享关于返回上一页和电脑浏览器怎么返回到前一页的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

2026年10月14日 21:40

php培训机构有哪些(天津有口碑不错的的学习PHP的培训机构推荐吗)

php培训机构有哪些(天津有口碑不错的的学习PHP的培训机构推荐吗)

其实php培训机构有哪些的问题并不复杂,但是又很多的朋友都不太了解天津有口碑不错的的学习PHP的培训机构推荐吗,因此呢,今天小编就来为大家分享php培训机构有哪些的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月14日 21:20

tcp三次握手详细过程(TCP/IP三次握手具体过程是什么)

tcp三次握手详细过程(TCP/IP三次握手具体过程是什么)

各位老铁们,大家好,今天由我来为大家分享tcp三次握手详细过程,以及TCP/IP三次握手具体过程是什么的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年10月14日 21:00

windows窗口句柄(窗口句柄的解疑)

windows窗口句柄(窗口句柄的解疑)

各位老铁们,大家好,今天由我来为大家分享windows窗口句柄,以及窗口句柄的解疑的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年10月14日 20:20

最近更新

solitaire(谁能翻译westlife的solitaire翻译)
2026-10-14 23:50:03 浏览:0
begin again2(begin again什么意思)
2026-10-14 23:10:03 浏览:0
热门文章

标签列表