如何启动指定数目的线程?

bborn 2003-12-18 08:48:47
假如我有100个工作
使用多线程
最多同时运行5个线程
如何来写代码?
...全文
59 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bborn 2003-12-24
  • 打赏
  • 举报
回复
最后up
bborn 2003-12-20
  • 打赏
  • 举报
回复
楼上说的不明白
glacierrr 2003-12-19
  • 打赏
  • 举报
回复
先创建5个线程(带消息响应),再加上临界区,然后要用的时候就发消息来用,当前5个都在运行就等。如果用线程池就更好了
wl3c 2003-12-19
  • 打赏
  • 举报
回复
就是啊,顶一下!!
shootingstars 2003-12-19
  • 打赏
  • 举报
回复
int iWorkThread = 5;
while(iWorkThread <= 100){
// 等待五个线程中的某一个结束。。。
DWORD dwret = WaitForMultipleObjects(5,handlearr,false,INFINITE);

// 如果某个线程结束就再启动一个。
handlearr[dwret-WAIT_OBJECT_0] = CreateThread();
iWorkThread++;
}

// 最后等待所有线程结束
WaitForMultipleObjects(5,handlearr,true,INFINITE);
bborn 2003-12-19
  • 打赏
  • 举报
回复
while 中间是什么?
bborn 2003-12-19
  • 打赏
  • 举报
回复
能不能介绍一下 线程池?

shootingstars 2003-12-18
  • 打赏
  • 举报
回复
我的方法不好么?
bborn 2003-12-18
  • 打赏
  • 举报
回复
我启动5次后

怎么来判断完成一次再启动一次
hanyixin 2003-12-18
  • 打赏
  • 举报
回复

跟启动一个是一样的,只是要启动五次。

shootingstars 2003-12-18
  • 打赏
  • 举报
回复
HANDLE handlearr[5];
for(int i=0;i<5;i++)
handlearr[i] = CreateThread();
while(工作未结束){
DWORD dwret = WaitForMultipleObjects(5,handlearr,false,INFINITE);
handlearr[dwret-WAIT_OBJECT_0] = CreateThread();
}
bborn 2003-12-18
  • 打赏
  • 举报
回复
如何?
isam 2003-12-18
  • 打赏
  • 举报
回复
我想作个计数器来判断好一点吧

15,471

社区成员

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

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