vs2015下pthread的使用
参考: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的使用相关推荐
- VS2015下OpenGL库的配置
写在前面: 最近要用到OpenGL,光是在VS2015下配置就费了很大的劲,现在将我的成果直接贡献给大家,希望能为需要在VS2015下配置OpenGL的读者省去一些麻烦. 正文: 资源地址1:http ...
- gdal1.6linux编译,VS2015下编译64位GDAL总结
使用VS2015编译最新的64位GDAL(最新gdal2.11),确实有一些问题,看来双方还是太新了,有点不兼容,特总结如下. 以前经常用的通过VisualStudio IDE进行编译的方式现在似乎不 ...
- VS2010/VS2012/VS2015下openGL环境配置(转)
按:按照下述博文,三个例子均成功. https://blog.csdn.net/so_geili/article/details/51685005 请仔细阅读每一个字. 为了学习<OpenGL超 ...
- VS2015下解决:error LNK2019: 无法解析的外部符号 __iob_func
在使用VS2015下使用libjpeg-turbo静态库,编译时报错了: error LNK2019: 无法解析的外部符号 __iob_func,该符号在函数 output_message 中被引用 ...
- VS2015下解决:无法解析的外部符号 __imp___vsnprintf 及__iob_func
1.解决:无法解析的外部符号 __imp___vsnprintf 在 vs2015 工程选项,链接器附加依赖项里面添加 legacy_stdio_definitions.lib 即可. 出现这个问题的 ...
- opencv2.4.13在win10+VS2015下的配置过程
opencv2.4.13在win10+VS2015下的配置过程 参考https://blog.csdn.net/shanghairuoxiao/article/details/69391229一个是本 ...
- VS2015下opengl的freeglut,glew以及gltools库的配置
由于上网搜索的答案各不相同,我只是为了配置glew就花费了将近一天的时间,深深感到了不同版本的Visual studio在配置opengl库中方法各异.在这里分享一个也是上网搜索得到的Visual S ...
- 雷塞SMC304系列控制器VC6.0例程在VS2015下编译遇到的若干问题及解决办法
雷塞SMC304系列控制器VC6.0例程在VS2015下编译遇到的若干问题及解决办法 标签(空格分隔): 雷塞 SM304 WIN10 VS2015 最近由于导师要求,负责喷涂机器人的控制部分,接触到 ...
- [Qt]VS2015下Qt项目的x86和x64版本编译
原创文章,欢迎转载.转载请注明:转载自 祥的博客 原文链接:https://blog.csdn.net/humanking7/article/details/85883828 文章目录 @[toc] ...
最新文章
- 机器学习 python_送书 | 深入浅出Python机器学习
- linux php7 安装redis扩展(php7可以使用自测)
- 什么是软件危机?产生原因?如何解决?
- React Native通信机制详解
- java class 关键字_java关键字及其作用
- 因为加班,谈了7年的女友跟我分手了……
- MySQL索引原理、失效情况
- c语言数组宏定义标识符,C语言学习笔记--预编译/宏定义/数组/参数传递/函数指针...
- 聚类算法评价指标学习笔记
- 保存命令行输出信息到log的方法(ubunut下和arm-linux下有效)
- JavaScript+cesium 添加高德影像图和标注
- 衔着树枝飞跃太平洋的傻鸟!(童话版)
- LaTeX 注释一行的某一部分
- Java实现附近地点搜索
- 安装nodejs遇到的坑
- 闲聊历史上的配角之赵高
- 哔哩哔哩2019秋招笔试试题二——脸滚键盘
- mysql水果表查询_最全MySQL数据库表的查询操作
- pdf签名无效解决办法_强大的PDF编辑工具Wondershare PDFelement
- 设计模式复合使用_结构设计模式:复合模式
热门文章
- 应用线性代数简介 - 向量,矩阵和最小二乘法 By Stephen Boyd and Lieven Vandenberghe
- canvas实现地图放大缩小拖拽
- render()到底渲染的什么?
- Java的Set转成逗号分隔的字符串
- 《基于卷积神经网络的深度迁移学习,用于燃气轮机燃烧室的故障检测》论文阅读
- 【Linux】一些命令
- [交互][FWT] UOJ #328. 【UTR #3】量子破碎
- 物联网毕业设计 单片机室内环境温湿度检测设计与实现
- liunx下关于图片、视频截图的处理
- [SWPUCTF 2021 新生赛] 第三波放题