参考:https://blog.csdn.net/k459905889/article/details/48676159

https://zhuanlan.zhihu.com/p/77551877

目录

一、pthread介绍

二、下载

三、配置

1、解压后共有三个文件夹

2、打开Pre-built.2

3、配置头文件及静态链接库

4、配置动态链接库

四、使用


一、pthread介绍

POSIX线程(英语:POSIX Threads,常被缩写为Pthreads)是POSIX的线程标准,定义了创建和操纵线程的一套API。实现POSIX 线程标准的库常被称作Pthreads,一般用于Unix-likePOSIX 系统,如Linux、Solaris。但是Microsoft Windows上的实现也存在,例如直接使用Windows API实现的第三方库pthreads-w32;而利用Windows的SFU/SUA子系统,则可以使用微软提供的一部分原生POSIX API。

二、下载

pthread下载:

pthreads-w32-2-9-1

tp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip

三、配置

1、解压后共有三个文件夹

Pre-built.2

pthreads.2

QueueUserAPCEx

2、打开Pre-built.2

dll                 ——>动态链接库

include         ——>头文件

lib                 ——>静态链接库

3、配置头文件及静态链接库

把include文件夹中的三个文件直接拷贝到Visual Studio安装目录下VC->include文件夹下,例如我将include中文件拷贝到的位置是

D:\Software\Microsoft Visual Studio 11.0\VC\include

把lib文件夹下的内容拷贝到Visual Studio安装目录下默认的lib寻找路径中,即VC->lib中,例如我将lib文件夹下的x64与x86两个文件直接拷贝到

D:\Software\Microsoft Visual Studio 11.0\VC\lib

4、配置动态链接库

把dll下的x64文件夹下的两个文件,即pthreadGC2.dll与pthreadVC2.dll拷贝到C:\Windows\System32下(64位程序的运行)

把dll下的x86文件夹下的五个文件,拷贝到C:\Windows\SysWOW64下(32位程序的运行)

四、使用


#include "stdafx.h"
#include<iostream>
#define HAVE_STRUCT_TIMESPEC
#include "pthread.h"
#include <windows.h>//#include <unistd.h>class Thread {
public:Thread();~Thread();bool Start();static void* ThreadFunc(void*);bool Run();
private:pthread_t mTid;
};Thread::Thread()
{}Thread::~Thread() {}bool Thread::Start() {return 0 == pthread_create(&mTid, NULL, &Thread::ThreadFunc, (void*)this);
}void* Thread::ThreadFunc(void* arg) {Thread* self = (Thread*)arg;self->Run();return NULL;
}bool Thread::Run() {while (true) {std::cout << mTid.p << std::endl;Sleep(1);}return true;
}int main() {Thread t1;t1.Start();Thread t2;t2.Start();Thread t3;t3.Start();while (true) {Sleep(1);}}

上述代码中,Thread类提供类3个函数,其中Start()为入口,调用pthreadcreate,而关键点就在这里了。pthread_create的第三个参数,也就是线程调用的函数传了一个Thread类的静态函数进去,因为在类中,静态成员函数是不需要通过类的访问的,所以pthread_create能够直接调用这个函数。而最关键的点就在于第四个参数,这里把this指针给传进去了,为什么呢?大家可以看到,在ThreadFunc函数的实现中,我们会把本身为void*类型的this指针重新强制类型转换为Thread* 类型,然后用来调用Run()方法。由于this指针就是类实例本身,通过这样两次类型的转换,线程和对应的类实例就绑定起来了。

vs2015下pthread的使用相关推荐

  1. VS2015下OpenGL库的配置

    写在前面: 最近要用到OpenGL,光是在VS2015下配置就费了很大的劲,现在将我的成果直接贡献给大家,希望能为需要在VS2015下配置OpenGL的读者省去一些麻烦. 正文: 资源地址1:http ...

  2. gdal1.6linux编译,VS2015下编译64位GDAL总结

    使用VS2015编译最新的64位GDAL(最新gdal2.11),确实有一些问题,看来双方还是太新了,有点不兼容,特总结如下. 以前经常用的通过VisualStudio IDE进行编译的方式现在似乎不 ...

  3. VS2010/VS2012/VS2015下openGL环境配置(转)

    按:按照下述博文,三个例子均成功. https://blog.csdn.net/so_geili/article/details/51685005 请仔细阅读每一个字. 为了学习<OpenGL超 ...

  4. VS2015下解决:error LNK2019: 无法解析的外部符号 __iob_func

    在使用VS2015下使用libjpeg-turbo静态库,编译时报错了: error LNK2019: 无法解析的外部符号 __iob_func,该符号在函数 output_message 中被引用 ...

  5. VS2015下解决:无法解析的外部符号 __imp___vsnprintf 及__iob_func

    1.解决:无法解析的外部符号 __imp___vsnprintf 在 vs2015 工程选项,链接器附加依赖项里面添加 legacy_stdio_definitions.lib 即可. 出现这个问题的 ...

  6. opencv2.4.13在win10+VS2015下的配置过程

    opencv2.4.13在win10+VS2015下的配置过程 参考https://blog.csdn.net/shanghairuoxiao/article/details/69391229一个是本 ...

  7. VS2015下opengl的freeglut,glew以及gltools库的配置

    由于上网搜索的答案各不相同,我只是为了配置glew就花费了将近一天的时间,深深感到了不同版本的Visual studio在配置opengl库中方法各异.在这里分享一个也是上网搜索得到的Visual S ...

  8. 雷塞SMC304系列控制器VC6.0例程在VS2015下编译遇到的若干问题及解决办法

    雷塞SMC304系列控制器VC6.0例程在VS2015下编译遇到的若干问题及解决办法 标签(空格分隔): 雷塞 SM304 WIN10 VS2015 最近由于导师要求,负责喷涂机器人的控制部分,接触到 ...

  9. [Qt]VS2015下Qt项目的x86和x64版本编译

    原创文章,欢迎转载.转载请注明:转载自 祥的博客 原文链接:https://blog.csdn.net/humanking7/article/details/85883828 文章目录 @[toc] ...

最新文章

  1. 机器学习 python_送书 | 深入浅出Python机器学习
  2. linux php7 安装redis扩展(php7可以使用自测)
  3. 什么是软件危机?产生原因?如何解决?
  4. React Native通信机制详解
  5. java class 关键字_java关键字及其作用
  6. 因为加班,谈了7年的女友跟我分手了……
  7. MySQL索引原理、失效情况
  8. c语言数组宏定义标识符,C语言学习笔记--预编译/宏定义/数组/参数传递/函数指针...
  9. 聚类算法评价指标学习笔记
  10. 保存命令行输出信息到log的方法(ubunut下和arm-linux下有效)
  11. JavaScript+cesium 添加高德影像图和标注
  12. 衔着树枝飞跃太平洋的傻鸟!(童话版)
  13. LaTeX 注释一行的某一部分
  14. Java实现附近地点搜索
  15. 安装nodejs遇到的坑
  16. 闲聊历史上的配角之赵高
  17. 哔哩哔哩2019秋招笔试试题二——脸滚键盘
  18. mysql水果表查询_最全MySQL数据库表的查询操作
  19. pdf签名无效解决办法_强大的PDF编辑工具Wondershare PDFelement
  20. 设计模式复合使用_结构设计模式:复合模式

热门文章

  1. 应用线性代数简介 - 向量,矩阵和最小二乘法 By Stephen Boyd and Lieven Vandenberghe
  2. canvas实现地图放大缩小拖拽
  3. render()到底渲染的什么?
  4. Java的Set转成逗号分隔的字符串
  5. 《基于卷积神经网络的深度迁移学习,用于燃气轮机燃烧室的故障检测》论文阅读
  6. 【Linux】一些命令
  7. [交互][FWT] UOJ #328. 【UTR #3】量子破碎
  8. 物联网毕业设计 单片机室内环境温湿度检测设计与实现
  9. liunx下关于图片、视频截图的处理
  10. [SWPUCTF 2021 新生赛] 第三波放题