gpt4 book ai didi

c - 在 C (Linux) 中并行使用 system()

转载 作者:太空宇宙 更新时间:2023-11-04 08:36:43 25 4
gpt4 key购买 nike

我的代码有一个包含 system() 的大型 for 循环。即

for(i=0;i<totalCycles;i++) {
<some C code>

//Bulk of the cpu time is taken up with the command below
system(command_string);

<some more C code>
}

这个 for 循环可以很容易地并行化,因为迭代不依赖于先前的迭代。通常我会使用 MPI 或 openMP 来并行化循环。但是,我不确定如何处理 system()。有一个类似的问题here ,但那是在仅并行化 system() 的上下文中,而不是在更大的循环中并行化 system()。

最佳答案

阅读system(3)手册页,它提到 fork(2)execl(3) ,所以也请阅读这些手册页。

您可能想要 fork所有(或可能只是足够多)并行处理。

你应该阅读 Advanced Linux Programming .它有几个章节讨论这个主题(我不会在这里总结)。

您需要定义是否要获取并行进程的输出。我猜你需要使用 pipe(2)可能是poll(2)有一些event loop处理传入(或传出)数据。

顺便说一句,除非您的许多进程大多处于空闲状态,否则您可能不想 fork 很多进程。运行的进程比处理器中的内核多得多可能会使系统变慢或 thrash .

关于c - 在 C (Linux) 中并行使用 system(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25917237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com