for循环改成多线程

AfterSeptember 2013-02-19 10:25:38
list<DD>::iterator it = m_dd.begin();
for (; it != m_dd.end(); it++)
{
it->Fun();

}


如果Fun是一个比较耗时的函数,怎么改造成多线程,让循环体内每个对象都能同步运行,不像for循环一样顺序执行。
...全文
676 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgstudyvc 2013-02-19
  • 打赏
  • 举报
回复
引用 3 楼 AfterSeptember 的回复:
引用 1 楼 sha_jinhao 的回复: 改成多线程不费时? it++改成++it! 这段代码放在一个定时器中的,如果运行时间太长,定时时间太短,不就会有问题啊。
每个对象开个定时器,完毕后,kill掉;没启动时就自己在那儿定时启动 这样你定时器去执行同一个功能,莫啥问题
孤客天涯 2013-02-19
  • 打赏
  • 举报
回复
如果数量不多可以下面方式: list<DD>::iterator it = m_dd.begin(); for (; it != m_dd.end(); it++) { HANDLE Thread = ::CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Thread_Test,it,0,&dwID);// 创建线程,并将it作为参数传入线程 } DWORD WINAPI Thread_Test(LPVOID wParam) { iterator *it = (iterator *)wParam; if(it) it->Fun(); return 0; }
未注销 2013-02-19
  • 打赏
  • 举报
回复
引用 2 楼 lgstudyvc 的回复:
定时器,简单些
这段代码放在一个定时器中的,如果运行时间太长,定时时间太短,不就会有问题啊。
未注销 2013-02-19
  • 打赏
  • 举报
回复
引用 1 楼 sha_jinhao 的回复:
改成多线程不费时? it++改成++it!
这段代码放在一个定时器中的,如果运行时间太长,定时时间太短,不就会有问题啊。
lgstudyvc 2013-02-19
  • 打赏
  • 举报
回复
定时器,简单些
jimette 2013-02-19
  • 打赏
  • 举报
回复
改成多线程不费时? it++改成++it!
Kaile 2013-02-19
  • 打赏
  • 举报
回复
用openmp 会自动用多线程循环展开

15,471

社区成员

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

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