多核心编程对大多数程序员来讲还是一个陌生的概念,
虽然多核心的处理器早就诞生了,
但是冯诺依曼的体系架构一直来将程序运行视作顺序执行的指令序列,
就算是OS, 也只不过进行时分复用.
多个核心一起运行代码, 如何同步, 如何分配任务, 如何互相通信, 只到现在都是只有少数工程师掌握的概念.
![](https://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/Dual_Core_Generic.svg/285px-Dual_Core_Generic.svg.png)
准备花些时间精力好好研究一下子OpenMP与OpenCL这两个架构:
![](https://upload.wikimedia.org/wikipedia/commons/thumb/e/eb/OpenMP_logo.png/270px-OpenMP_logo.png)
![](https://upload.wikimedia.org/wikipedia/en/thumb/1/1c/OpenCL_Logo.svg/300px-OpenCL_Logo.svg.png)
这是我弄的第一个测试程序:
<code>
#include <stdio.h>
int main(void)
{
#pragma omp parallel
printf("Hello, world.\n");
return 0;
}
//gcc -fopenmp omp_t1.c
</code>
在我的四核机器上运行结果:
Hello, world.
Hello, world.
Hello, world.
Hello, world.