1. parallel for
for的并行执行code: (c++)
#include <iostream>
#include <omp.h>using namesapce std;int main()
{printf("parallel begin: \n");#pragma omp parallel for{for(int i = 0; i < 10; ++i)printf("i = %d, threadID = %d", i, omp_get_thread_num());}return 0;
}
result:
系统一共开了四个线程, 对于每个线程的本身是串行的, 对于不同的线程是并行的。
notice:1. for 语句来分摊是由系统自动进行,只要每次循环间没有时间上的差距,那么分摊是很均匀的.
2. parallel sections
section 的并行执行
code: (c++)
#include <iostream>
#include <omp.h>using namespace std;void main()
{#pragma omp parallel sections {
#pragma omp sectionprintf(“section 1 ID = %d\n”, omp_get_thread_num());#pragma omp sectionprintf(“section 2 ID = %d\n”, omp_get_thread_num());#pragma omp sectionprintf(“section 3 ID = %d\n”, omp_get_thread_num());#pragma omp sectionprintf(“section 4 ID = %d\n”, omp_get_thread_num());}
}
resule:
notice:1. section 语句是用在 sections 语句里用来将 sections 语句里的代码划分成几个不同的段, 每段都并行执行.2. 使用 section 语句时, 需要注意的是这种方式需要保证各个 section 里的代码执行时间相差不大,否则某个 section 执行时间比其他 section 过长就达不到并行执行的效果了.3. 使用 section 来划分线程是一种手工划分线程.