在C中使用多个子进程的最佳方法是什么

时间:2013-04-24 00:34:59

标签: c multithreading multiprocessing

使用wget每20分钟处理一个请求从不同位置下载大约300张照片的项目。 我写了一个C程序,它将所有ID和数据库的数据库读入一个数组。 对于数组中的每个条目,我调用外部wget命令来下载它。 它工作但很慢,因为它是一个接一个地做。

我的想法是使用多进程,多线程或openMP来创建多个子进程。 任何关于如何做到这一点的建议都是值得赞赏的。

2 个答案:

答案 0 :(得分:1)

多个流程

一个进程中的错误不会导致另一个进程崩溃。当您托管第三方代码(例如插件)时,此功能特别有用,这是Google Chrome采用的方法(以及其他方式)。缺点是 N 进程比 N 线程使用更多的系统资源。

多线程

使用的系统资源少于同等数量的进程。对于许多开发人员来说,线程编程更容易出错,并且一个线程中的错误可能会影响其他线程。

最佳选择

对于您正在做的事情,您不太可能看到资源利用率的显着差异。使用您能以高质量快速编写的模型。

答案 1 :(得分:1)

就个人而言,我会选择多道工序。 wget不需要共享任何内存或通信(除了root只需要的退出状态),因此线程不会提供任何额外的好处(在我看来)。除了将它们创建为已处理之外,OS调度程序还可以最好地决定何时运行每个进程。