微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

multithreading独立的任务

我有N个任务,它们是独立的(即写入不同的内存地址),但不需要完全相同的时间完成(例如2到10秒)。 我有P线程。

我可以将我的N个任务分成P个线程,并启动我的线程。 最后,最后还会有一个线程完成最后的几个任务,这不是最优的。

我还可以启动P线程,每个线程有1个任务,WaitForMultipleObjects,并重新启动P线程等(这是我目前所做的,因为创build线程的开销比任务小)。 但是,这也不能解决问题,在某一点上仍然会有P-1线程在等待最后一个线程。

有没有办法启动线程,一旦线程完成任务,继续下一个可用的任务,直到所有的任务完成?

编写Unix和Windows的应用程序

如何检测用户何时按下关机button?

在参数typedef更改时重builddynamic库

在C中编写一个可移植的命令行包装器

当我发送大量kill()命令时,我的服务器不处理所有的信号

谢谢 !

OS X UDP发送错误:55没有可用的缓冲区空间

Code :: Blocks中的OpenCV:应用程序无法正确启动(0xc00000be)

如何在Windows上的内核模式下获得进程使用的cpu时钟周期?

物品是否被杀死了?

将批处理shell脚本输出读入C#.Net程序

是的,这就是所谓的线程池。 这是一个非常普遍的做法。

http://en.wikipedia.org/wiki/Thread_pool_pattern

基本上,你创建一个任务队列(函数指针与他们的参数),并推动任务那里。 您有N个线程正在运行,执行以下循环(原理图代码):

while (bRunning) { task = m_pQueue.pop(); if (task) { executeTask(task); } else { //you can sleep a bit here if you want } }

有更多的优雅的方式来实现它(避免睡觉等),但这是它的要点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐