zoukankan      html  css  js  c++  java
  • Win10+VS2017配置pthread

    0、pthread源码下载:https://sourceware.org/pthreads-win32/

    1、下载pthreads-w32-2-9-1-release.zip完毕后,解压,内容如下

     其中,【Pre-built.2】是pthreads for win32的头文件和库文件,【pthreads.2】是源代码,【QueueUserAPCEx】是一个驱动,需要WDK支持编译。

    2、将【.pthreads-w32-2-9-1-releasePre-built.2include】目录下的头文件拷贝到VS2017的安装目录,当前环境下是【C:Program Files (x86)Microsoft Visual Studio2017EnterpriseVCToolsMSVC14.16.27023include

    3、把【.pthreads-w32-2-9-1-releasePre-built.2lib】下的静态库文件拷贝到VS2017的安装目录,当前环境下是【C:Program Files (x86)Microsoft Visual Studio2017EnterpriseVCToolsMSVC14.16.27023lib】,x86和x64对 

    4、把【.pthreads-w32-2-9-1-releasePre-built.2dll】下的动态库文件拷贝到系统目录下,x86文件对应C:WindowsSysWOW64目录,x64文件对应C:WindowsSystem32目录

    也可以在某个项目中引用该库,或者用更加时髦的Nuget也可以找到这个库。

    配置好后,可用以下代码进行测试:

     1 #include "pch.h"
     2 #include <iostream>
     3 #include <stdio.h>
     4 #include <pthread.h>
     5 #include <assert.h>
     6 
     7 #pragma comment(lib,"x86/pthreadVC2.lib")
     8 
     9 void* Function_t(void* Param)
    10 {
    11     std::cout << "多线程 " << std::endl;
    12     pthread_t myid = pthread_self();
    13     std::cout << "线程ID=" << myid.x << std::endl;
    14     return NULL;
    15 }
    16 
    17 int main(int argc, const char *argv[])
    18 {
    19     pthread_t pid;
    20     pthread_attr_t attr;
    21     pthread_attr_init(&attr);
    22     pthread_attr_setscope(&attr, PTHREAD_SCOPE_PROCESS);
    23     pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
    24     pthread_create(&pid, &attr, Function_t, NULL);
    25     std::cout << "======================================== " << std::endl;
    26     getchar();
    27     pthread_attr_destroy(&attr);
    28     return 0;
    29 }

    如果在编译时报错【C2011 “timespec”:“struct”类型重定义】,原因是【pthread.h 中的 timespec 和 time.h 中的结构定义重复了,同时两个头文件中的编译条件不同,造成了结构的重复定义】,

    解决方案:

    #if !defined( PTHREAD_H )
    #define PTHREAD_H
    下面加上
    #define HAVE_STRUCT_TIMESPEC
  • 相关阅读:
    软件构架实践_阅读笔记04(-11)
    软件构架实践_阅读笔记03(7-9)
    Tsinsen-A1488 : 魔法波【高斯消元+异或方程组】
    Tsinsen-1487:分配游戏【树状数组】
    Tsinsen-1486:树【Trie树 + 点分治】
    Splay初步【bzoj1503】
    Treap初步
    [BZOJ3207] 花神的嘲讽计划Ⅰ
    可持久化Trie树初步
    可持久化线段树初步
  • 原文地址:https://www.cnblogs.com/lzhu/p/12032783.html
Copyright © 2011-2022 走看看