【问题标题】:What is best way to have several child processes in C在C中有几个子进程的最佳方法是什么
【发布时间】:2013-04-24 00:34:59
【问题描述】:

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

我的想法是使用多进程、多线程或 openMP 来创建多个子级。 任何关于如何做到这一点的建议都非常感谢。

【问题讨论】:

    标签: c multithreading multiprocessing


    【解决方案1】:

    多个进程

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

    多线程

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

    最佳选择

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • wget 无论如何都是一个子进程。这真的归结为启动 wget 调用的控制进程是否应该是多线程的。
      猜你喜欢
      • 1970-01-01
      • 2018-05-31
      • 1970-01-01
      • 2010-09-21
      • 2022-06-10
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多