POSIX线程(POSIX threads),简称Pthreads,是线程的POSIX标准。该标准定义了创建和操纵线程的一整套API。在类Unix操作系统(Unix、Linux、Mac OS X等)中,都使用Pthreads作为操作系统的线程。Windows操作系统也有其移植版pthreads-win32。
转载连接:https://blog.csdn.net/cry1994/article/details/79115394
下载源码
源码主页:https://sourceware.org/pthreads-win32/
ftp地址:ftp://sourceware.org/pub/pthreads-win32
下载最新版本pthreads-w32-2-9-1-release.zip解压得到三个文件夹
Pre-built.2
Pre-build.2 里面包含了pthreads for win32 的头文件和库文件;
pthreads.2
pthreads.2 里面包含了pthreads 的源代码;
QueueUserAPCEx
QueueUserAPCEx 里面是一个alert的driver,编译需要DDK 。Windows Device Driver Kit (NTDDK.h) 需要额外单独安装。
直接使用or编译源码
1.直接使用
- Pre-built.2这个文件夹下有三个文件夹
-
dll
动态链接库
-
include
头文件
-
lib
静态链接库
1.1配置头文件
把include文件夹下的头文件拷贝到vs2017安装目录下
D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include\
1.2配置静态链接库
把lib文件夹下的静态库文件拷贝到vs2017安装目录下
D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\lib
1.3配置动态链接库
Pre-built.2\dll\x86下的文件拷贝到C:\Windows\SysWOW64目录下
Pre-built.2\dll\x64下的文件拷贝到C:\Windows\System32目录下
测试
#include <pthread.h>
#pragma comment(lib,"pthreadVC2.lib")
int main()
{
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
编译错误C2011 “timespec”:“struct”类型重定义
可修改pthread.h文件,在
#if !defined( PTHREAD_H )
#define PTHREAD_H
下面加上一行宏定义
#define HAVE_STRUCT_TIMESPEC
可以解决“timespec”:“struct”类型重定义错误
- 1
- 2
- 3
- 4
- 5
- 6
至此,已经可以在VS2017中使用。如果不想改动到VS2017的目录和系统目录,可以通过配置工程项目属性,设置附加包含目录/链接器附加依赖库等选项,从而达到使用pthread库的目的。
2.编译pthread源码
暂时懒得研究。就酱,用着先。
来源:oschina
链接:https://my.oschina.net/u/4402581/blog/3706200