【问题标题】:call a function in background in c++ similar to unix shell scripting在 C++ 中调用类似于 unix shell 脚本的函数
【发布时间】:2012-04-16 18:42:01
【问题描述】:

我想在 c++ 中并行调用函数,该函数将接受输入并执行一些格式化、验证、增强等。

在 unix 中,我可以在循环中调用它并将值作为参数传递给在 BG & 中运行的函数。

shell 脚本中的示例是:

echo $value | while read arg1 arg2
do
     parser arg1 arg2 &
done
wait

如何在 c++ 中使用/不使用多线程?

谢谢...

【问题讨论】:

  • 如果您不是在多线程环境中执行,那么您所要求的可能并不容易实现。我的建议是学习线程。
  • 您列出了 visual-c++ 和 unix。您是在寻找可移植到 windows 和 unix 的良好解决方案,还是两者之一的理想解决方案?
  • 在 Unix 和 Windows 上运行,我的 c++ pogram 必须从 unix env 获取一些数据并执行某些操作。目前我没有权限访问 unix env 上的编译器。我已提出请求,但不确定需要多长时间。
  • 多个进程在Posix中使用forkexec启动;多个 threads 是 pthreads 的句柄。
  • @TokenMacGuy 你能指点我一个 c/c++ 示例,其中完成了类似的事情。多次使用 fork 调用函数,类似于我在上面的脚本中所做的。当我将其与上面的脚本进行比较时,无法超越父子概念。

标签: c++ c multithreading visual-c++ unix


【解决方案1】:

为了“在后台”或“并行”运行,您必须使用多线程(在同一进程中使用多个线程,或使用多个进程,具体取决于具体情况)。每当你想在后台运行某些东西时,你应该创建一个新的线程/进程,并告诉它运行你想要在后台运行的代码,并继续在原始线程/进程中执行其余代码。

【讨论】:

    【解决方案2】:

    正如其他人所指出的,您必须创建子进程或线程。这两种技术都需要系统相关的代码。如果您想独立于系统并可以访问支持它的编译器(我不知道有任何编译器不支持),您可以使用OpenMP 来执行多线程。但是,这种技术主要适用于所有线程执行相同操作的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      • 2016-06-22
      • 2016-06-10
      • 2018-02-13
      • 2014-12-11
      • 2018-02-27
      • 1970-01-01
      相关资源
      最近更新 更多