OpenMP并行程序求判断某一年是否为闰年
时间: 2023-08-20 08:05:05 浏览: 102
以下是一个使用OpenMP并行化的判断某一年是否为闰年的程序:
```c
#include <stdio.h>
#include <omp.h>
int main() {
int year = 2021;
int is_leap_year = 0;
#pragma omp parallel num_threads(2)
{
#pragma omp sections
{
#pragma omp section
{
if (year % 4 == 0) {
#pragma omp atomic write
is_leap_year = 1;
}
}
#pragma omp section
{
if (year % 100 == 0 && year % 400 != 0) {
#pragma omp atomic write
is_leap_year = 0;
}
}
}
}
if (is_leap_year) {
printf("%d is a leap year.\n", year);
} else {
printf("%d is not a leap year.\n", year);
}
return 0;
}
```
程序中使用了OpenMP的并行机制,将判断是否为闰年的两个条件分别放在两个并行的线程中执行,最后通过`atomic write`操作来保证结果的正确性。其中`num_threads`指定了使用的线程数,`sections`将代码划分为两个部分,`section`用来指定每个部分的具体代码。
阅读全文