WaitForMultipleObjects()函数不是等待所有线程结束才返回么?为什么没结束就返回了?

huangdigege 2014-09-09 03:27:30
RT,函数的第三个参数已经设置为true了。
现在我有两个线程在跑,一个线程A从容器里取数据然后写入队列vec,写一个就输出打印一次,另一个线程B是把A写入的数据读出来。两个线程创建之后调用WaitForMultipleObjects()。
但是在运行的时候发现线程B没有读完线程A写入队列的数据就返回了。这是什么原因?
...全文
263 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿呆_ 2014-09-28
  • 打赏
  • 举报
回复
引用 4 楼 huangdigege 的回复:
[quote=引用 2 楼 Saleayas 的回复:] 看看 返回值和 lasterror。
两个线程都分别有输出打印,假如第一个线程A写入了100个数据会打印100个语句,,第二个线程应该也100个打印语句才对,但是每次打印语句都不到100就返回了,在此调用函数创建这两个线程的时候才会把剩下的打印出来[/quote] 看上去像输出缓冲区没有刷新,输出已经完成了,但是缓冲区内容没有显示到屏幕而已
Saleayas 2014-09-09
  • 打赏
  • 举报
回复
看看你的输出是怎么写的了。 使用 DebugOutString 之类很正常了。
Eleven 2014-09-09
  • 打赏
  • 举报
回复
你的代码是怎么写的?
huangdigege 2014-09-09
  • 打赏
  • 举报
回复
输出地方是这样: 将数据1写入队列 从队列中读取第1条数据 将数据2写入队列 从队列中读取第2条数据 将数据3写入队列 从队列中读取第3条数据 ....... 将数据100写入队列 从队列中读取第89条数据 (程序会在这里调到别的地方执行)从队列中读取第90条数据 从队列中读取第91条数据 从队列中读取第92条数据 从队列中读取第93条数据 ...... 从队列中读取第100条数据
huangdigege 2014-09-09
  • 打赏
  • 举报
回复
引用 2 楼 Saleayas 的回复:
看看 返回值和 lasterror。
两个线程都分别有输出打印,假如第一个线程A写入了100个数据会打印100个语句,,第二个线程应该也100个打印语句才对,但是每次打印语句都不到100就返回了,在此调用函数创建这两个线程的时候才会把剩下的打印出来
huangdigege 2014-09-09
  • 打赏
  • 举报
回复
引用 2 楼 Saleayas 的回复:
看看 返回值和 lasterror。
返回值也正确,是WAIT_OBJECT_0
Saleayas 2014-09-09
  • 打赏
  • 举报
回复
看看 返回值和 lasterror。
huangdigege 2014-09-09
  • 打赏
  • 举报
回复
有木有人啊,卡两天了,也没找到原因

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧