我在C中进行并行编程;因此,我在文章中看到的任何解决方案都是基于线程或 OpenMP , MPI ,在Windows上选择或在* nix上选择 Fork ;我有以下问题:
单个进程可以在单个线程上并行进行并且没有 Forking 本身吗?
是否还有其他编写并行代码的方法,但是C语言中有非常基本的构建块?可以通过手动移动位来完成的事情,纯粹在C内置函数中 - 不使用利用操作系统功能的高级库?
此问题的目的还在于更好地理解并行编程在近似金属世界中的工作原理。我没有兴趣进行微观优化或重新发明图书馆。
更新
我基本上考虑编写 Callback 函数,并在 Event 发生时调用它们;但我不确定它是否会使它平行。
答案 0 :(得分:2)
答案 1 :(得分:1)
一个进程可以在单个线程上并行进行并且没有分叉本身吗?
这取决于编译器。尽管大多数编译器不能在单线程程序中跨多个内核进行并行化,但编译器可以随心所欲地在序列点之间实现指令。
示例:矢量处理器(如Cray超级计算机)或GPU(图形卡)的编译器使用unrolling并行化循环。