1

从事一个项目,该项目要求wget每 20 分钟使用一次从不同位置下载大约 300 张图片。我编写了一个 C 程序,它将所有 Id 和位置的数据库读取到一个数组中。对于数组中的每个条目,我调用外部wget命令来下载它。它可以工作但很慢,因为它是一个接一个地做的。

我的想法是使用多进程、多线程或 openMP 来创建几个孩子。任何有关如何执行此操作的建议都将不胜感激。

4

2 回答 2

1

多进程

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

多线程

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

最佳选择

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

于 2013-04-24T00:39:50.013 回答
1

我个人会选择多进程。wget 不需要共享任何内存或通信(除了只有根需要的退出状态),因此线程不会提供任何额外的好处(在我看来)。除了将它们创建为已处理之外,还允许操作系统调度程序最好地决定何时运行每个进程。

于 2013-04-24T00:41:12.667 回答