visual studio 2019配置Pthreads和OpenMP

配置Pthreads

安装平台

Windows10 64位系统
Visual Studio 2019(32位)
C/C++环境:MinGW

下载pthread

下载地址:ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip
压缩包解压后有三个文件夹:
Pre-built.2
Pthreads.2
QueueUserAPCEx
主要用到Pre-built.2下的三个文件夹,分别是dll(动态链接库)、include(头文件库)以及lib(静态链接库)。

相关阅读

OpenMP实现求矩阵均值最大值以及最小值
OpenMP实现数据统计
Pthreads实现任务队列
Pthreads实现梯形积分
visual studio 2019配置Pthreads和OpenMP
CodeBlocks 17.12配置Pthreads和OpenMP

环境配置

项目→属性→配置属性→VC++目录
在包含目录中添加include路径,如下图所示
在这里插入图片描述
在库目录中添加lib路径,如下图所示
在这里插入图片描述
注:根据系统选择,32位选择x86,64位选择x64。
在连接器→输入,附加依赖项添加 pthreadVC2.lib,如下图所示
在这里插入图片描述

“timespec”;”struct”类型重定义

以上步骤完成后,编译代码会出现这个报错,只需要编辑pthread.h文件开头部分,找到第33行如下所示代码

#if !defined( PTHREAD_H )
#define PTHREAD_H

在第35行加入如下代码:

#define HAVE_STRUCT_TIMESPEC

测试代码

#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文件。

测试结果

在这里插入图片描述
在这里插入图片描述

配置OpenMP

使用平台

Windows10 64位系统
Visual Studio 2019(32位)
C/C++环境:MinGW

开启OpenMP

调试→属性→C/C++→所有选项→OpenMP支持改为是,如下图所示
在这里插入图片描述

测试代码

#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;
}

测试结果

在这里插入图片描述

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值