我正在编写一个如下的C程序:

for (int i=0;i<n;i++){
    [makes new file for i: i.txt]
    [runs a long and intensive computation]
    [writes to i.txt]
    [closes i.txt]}

其中n是一些大数。显然,可以一次并行运行多个迭代,因为它们彼此不依赖。我的处理器上有八个内核,因此似乎希望我的程序将迭代分布在八个内核上,这样它才能尽快运行。这意味着我希望程序是多线程的。

我的问题是我是否需要在C中手动对这个过程进行多线程处理,或者是否在某种程度上自动完成了多线程处理。我正在使用GCC进行编译,我知道GCC可以很好地进行优化,但是我不知道它是否会自动生成多线程。我也不知道我的操作系统(Debian Linux)是否可能不会自动将程序分发到处理器的所有八个内核上。如果没有,是否有一种方法可以将其转换为多线程,而不必实际在C中编写多线程代码?

最佳答案

您可以根据需要手动对其进行多线程处理,也可以使用库和工具来承担尽可能多的责任。 OpenMP绝对值得一看。

关于c - 自动多线程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21563884/

10-12 16:21