配置Pthreads和OpenMP
安装平台
Windows10 64位系统
CodeBlocks 17.12(32位)
C/C++环境:MinGW
相关阅读
OpenMP实现求矩阵均值最大值以及最小值
OpenMP实现数据统计
Pthreads实现任务队列
Pthreads实现梯形积分
visual studio 2019配置Pthreads和OpenMP
CodeBlocks 17.12配置Pthreads和OpenMP
下载安装TDM-GCC编译器
下载地址:http://tdm-gcc.tdragon.net/download
下载完成打开安装,点击Create

选择MinGW/TDM(32-bit)

连续点击两次next,之后选择安装完整包,再点击install知道安装结束。

配置CodeBlocks
设置→编译器

可执行工具链→编译器的安装目录中选择上面TDM-GCC的安装目录

点击编译器设置选项卡下的其他编译器设置,添加“-fopenmp”

点击链接器设置选项卡,在其他链接器选项中添加“-lgomp -lpthread”,最后点击确定

测试代码一
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int thread_count;
void* Hello(void* rank);
int main(int argc, char* argv[]) {
long i;
pthread_t* thread_handles;
thread_count = 5;
thread_handles = malloc(thread_count*sizeof(pthread_t));
for (i = 0; i < thread_count; i++)
pthread_create(&thread_handles[i], NULL, Hello, (void*)i);
printf("Hello from the main thread\n");
for (i = 0; i < thread_count; i++)
pthread_join(thread_handles[i], NULL);
free(thread_handles);
return 0;
}
void* Hello(void* rank) {
long my_rank = (long) rank;
printf("Hello from thread %ld of %d\n", my_rank, thread_count);
return NULL;
}
注:如果出现C2440 “=”: 无法从“void *”转换为“pthread_t *”错误,只需将.cpp文件改为.c文件。
测试结果一


测试代码二
#include "stdio.h"
#include "omp.h"
int main()
{
printf("Hello from serial.\n");
printf("Thread number = % d\n",omp_get_thread_num());
#pragma omp parallel
{
printf("Hello from parallel.Thread number = % d\n", omp_get_thread_num());
}
printf("Hello from serial again.\n");
return 0;
}
测试结果二


本文详细介绍在Windows10 64位系统下,使用CodeBlocks 17.12和MinGW环境下,如何配置并使用Pthreads和OpenMP进行多线程编程。通过下载TDM-GCC编译器,并在CodeBlocks中进行相应的设置,实现Pthreads和OpenMP的编译和链接。

289

被折叠的 条评论
为什么被折叠?



