社区
进程/线程/DLL
帖子详情
如何确保线程执行完后,再执行后面步骤???
hzhhy
2004-04-10 02:31:15
程序:
f()
{for(i=0;i<2;i++)
m_pThread=AfxBeginThread(&ThreadsProc,(LPvoid)p[i],ThreadPriority[i]);
f1();
}
在这个程序中,f1()不等m_pThread[i]执行完就先执行,为什么呀???
怎样才能使线程m_pThread[i]执行完后再执行后面步骤???
...全文
358
9
打赏
收藏
如何确保线程执行完后,再执行后面步骤???
程序: f() {for(i=0;i<2;i++) m_pThread=AfxBeginThread(&ThreadsProc,(LPvoid)p[i],ThreadPriority[i]); f1(); } 在这个程序中,f1()不等m_pThread[i]执行完就先执行,为什么呀??? 怎样才能使线程m_pThread[i]执行完后再执行后面步骤???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
top_hipster
2004-04-11
打赏
举报
回复
for(i=0;i<2;i++)
{
m_pThread[i]=AfxBeginThread(&ThreadsProc,(LPvoid)p[i],ThreadPriority[i]);
}
WaitForMultiObject(2,m_pThread,,TRUE,INFINITE);
f1();
可以等到两个线程都运行结束后,才执行f1();
babam
2004-04-11
打赏
举报
回复
你要等他执行完,为什么不顺序执行?要另开一个线程?
hai_feng
2004-04-11
打赏
举报
回复
f()
{for(i=0;i<2;i++)
//还要加一句
CEventThreadEnd.ResetEvent();
m_pThread=AfxBeginThread(&ThreadsProc,(LPvoid)p[i],ThreadPriority[i]);
//加入这句
::WaitForSingleObject(CEventThreadEnd.m_hObject,INFINITE);
f1();
}
hai_feng
2004-04-11
打赏
举报
回复
用下面的代码试一下:
CEvent CEventThreadEnd;//定义全局变量
……
//你的线程主函数
UINT ThreadsProc(LPVOID pParam)
{
//具体操作
//……
//在线程要退出时插入这句:
CEventThreadEnd.SetEvent();
//线程正常退出
return 0;
}
……
f()
{for(i=0;i<2;i++)
m_pThread=AfxBeginThread(&ThreadsProc,(LPvoid)p[i],ThreadPriority[i]);
//加入这句
::WaitForSingleObject(CEventThreadEnd.m_hObject,INFINITE);
f1();
}
yxlijinzhu
2004-04-10
打赏
举报
回复
你的这个问题典型的解决办法肯定是用信号量.
你可以让你的那两个线程在退出时使信号量有效就行了, 大体代码类似于楼上高手的代码, 只是你是一个线程等待两个线程的信号而已.
hzhhy
2004-04-10
打赏
举报
回复
唉,我这两个线程内都是调用com中的函数,
不会是这个不行吧!
用也不行!
hzhhy
2004-04-10
打赏
举报
回复
呜呜~~~~~~~~~~~~~
大哥,按您的方法做了,
仍然是f1();先执行!!!!!
我是想这两个线程同时执行,两个都执行完成再执行f1();
~~~~~
icr_mio
2004-04-10
打赏
举报
回复
ft!
------------------
f()
{
for(i=0;i<2;i++)
{
m_pThread=AfxBeginThread(&ThreadsProc,(LPvoid)p[i],ThreadPriority[i]);
WaitForSingleObject(m_pThread, -1);
f1();
}
}
icr_mio
2004-04-10
打赏
举报
回复
f()
{for(i=0;i<2;i++)
m_pThread=AfxBeginThread(&ThreadsProc,(LPvoid)p[i],ThreadPriority[i]);
WaitForSingleObject(m_pThread, -1);
f1();
}
python
线程
进程、异步IO
多
线程
是指从软件或者硬件上实现多个
线程
并发
执行
的技术。具有多
线程
能力的计算机因有硬件支持而能够在同一时间
执行
多于一个
线程
,进而提升整体处理性能。 该章节主要包括
线程
进程的概念,基于python的
线程
进程实现,GIL锁的影响,消费者生产者模型,进程池的应用以及IO模型的介绍,一句话概括本章的内容就是:实现并发编程,即计算机能够同时处理多个任务。
怎么保证在多
线程
任务都
执行
完后
再
执行
某一动作 CountDownLatch
在开发过程当中,我们使用了多
线程
来异步
执行
多任务,但是我们想在这些任务
执行
完成后,才接着再
执行
的话,就需要使用到CountDownLatch这个类了。 首先我们需要知道被
执行
任务的个数,比如这里是有20个任务,那么 CountDownLatch latch = new CountDownLatch(20); 然后在创建任务的时候,把latch带进去,在该任务的run()方法
执行
完毕后,需要
执行
latch.countDown()方法。这个countDown()方法就标识这个任务
执行
完了,总的数量会减1.
JAVA多
线程
下的同步问题-等所有
线程
执行
完在
执行
下面的操作
JAVA同步工具类CountDownLatch的用法 提示:在我们进行JAVA多
线程
编程时,有时我们想要等到所有新开辟的
线程
执行
完毕后再
执行
下面的操作,又或者是需要等到异步操作的结果。那么,此时我们就需要对当前的“主
线程
”进行阻塞。Java的同步工具类CountDownLatch给我们提供了一个不错的解决方案。 文章目录JAVA同步工具类CountDownLatch的用法一、概念二、工具类常用方法1.await()2.countDown()三、完整例子总结在实时系统中的使用场景 一、概念 CountD
java 多
线程
全部
执行
完后
再继续进行后门的方法
今天面试一家互联网公司,被虐的有点体无完肤,后来查询资料来总结下。 我们知道,当不使用
线程
池时,想让A
线程
在B
线程
执行
完之后
执行
,需要在A中的某个调用处,调用B.join,但如果使用jdk1.5以后提供的
线程
池ExecutorService,这个就用不上了,用了会出同步问题,其实这个场景应该是很常见的吧,比如你用多
线程
并发
执行
一些操作,当这些操作全部完成时才能进行下一步,这就是需要这个功能了。...
Java 有两个任务A与B,多
线程
执行
任务A完成后再继续
执行
任务B
内容描述:在多
线程
中,有两个任务A与B,多
线程
执行
任务A完成后再继续
执行
任务B,想到的两种方法一种
线程
间通信,使用条件变量方式,第二种就是使用CountDownLatch。 条件变量主要使用的条件变量,判断是否任务A已经做完,然后再
执行
任务B public class Main { public static boolean[] flag = new boolean[3]; public
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章