pthread+Windows环境搭建

本文介绍了在Windows下如何使用pthread库,包括动态和静态载入的配置步骤,以及如何实现跨平台兼容。动态载入需要设置附加库目录、附加依赖项和包含目录,并放置相应的dll;静态载入则不需dll,但需要预处理器定义。文章还提供了下载链接和详细配置教程。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


为什么会要用到pthread库?

  pthread库是Linux的多线程库,通常在Windows下使用该库大多数是为了实现与Linux的跨平台兼容。
  如果你为了在Windows环境下实现多线程,可以考虑Windows自带的多线程API。
  当然你也可以使用宏定义的方式,区分windows与Linux环境在执行对应的多线程接口,实现跨平台运行,毕竟条条大路通罗马。
  以上只为发散思维,下面进入正题


一、pthread库下载

  如果你已经有了该库,那么该资源可以不用下载。

链接:https://pan.baidu.com/s/11_AZhBdpATCCMKYgaSsVGQ
提取码:tsaw
PS:讨厌那些动不动就把资源丢到CSDN上骗积分的人!这让没有积分的人怎么下载?

二、使用步骤

演示环境 Win10 + VS2015

1.创建VS工程

点击文件->新建->项目->选择Win32项目->确定,选择控制台应用程序->勾选空项目,完成创建。   右键源文件->添加->新建项,创建一个.cpp文件,取名为main.cpp

在这里插入图片描述

这只是创建一个演示工程,如果你已经有一个项目了,这个步骤可以跳过。

2.设置环境变量

将解压后的pthread文件夹丢到工程目录下
在这里插入图片描述
接下来将通过动态载入静态载入两种方式讲解如何配置pthread库环境,请根据项目需要任选其一

2.1动态载入

1.右键项目工程,选择属性,进入属性页

在这里插入图片描述
以Release—X64环境为例
2.选择链接器->常规->附加库目录输入
pthread\lib\v110\x64\Release\dynamic\cdecl
在这里插入图片描述
这里选择的是V110版本,X64环境,Release模式,动态载入,cdecl调用方式。
当然你也可以选择其他版本或者其他调用方式,只需要在文件夹中找到对应文件即可。

3.选择链接器->输入->附加依赖项输入
libpthread.lib
这个其实就是第2步中目标文件夹中的文件
在这里插入图片描述
在这里插入图片描述

4.选择C/C++ ->常规->附加包含目录输入
pthread\include
在这里插入图片描述
5.将 pthread\bin\v110\x64\Release\dynamic\cdecl 目录下的.dll放到项目工程目录
在这里插入图片描述
在这里插入图片描述

注意:这里的dll必须和lib相对应,除了开头的bin 和lib 文件夹有不同外,其他的路径是相同的

6.随意编写一个测试程序,如果程序正常启动表示环境搭建完成

#include<stdio.h>
#include<pthread.h>
#include<Windows.h>

void*Function_t(void* Param)
{
	pthread_t myid = pthread_self();
	while (1)
	{
		printf("线程ID=%d \n", myid);
		Sleep(1000);
	}
	return NULL;
}

int main()
{
	pthread_t pid;
	pthread_create(&pid, NULL, Function_t, NULL);
	while (1)
	{
		printf("in fatherprocess!\n");
		Sleep(1000);
	}
	getchar();
	return 1;
}

2.2静态载入

使用动态载入的方式使得程序必须依赖其dll,如果dll丢失,将导致程序无法运行。所以,在某些时候,使用静态载入的方式,也是一种不错的选择。

1.右键项目工程,选择属性,进入属性页
在这里插入图片描述
同样,以Release—X64环境为例
2.选择链接器->常规->附加库目录输入
pthread\lib\v110\x64\Release\static\cdecl
在这里插入图片描述

3.选择链接器->输入->附加依赖项输入
libpthread-static.lib
这个其实就是第2步中目标文件夹中的文件
在这里插入图片描述
在这里插入图片描述
4.选择C/C++ ->常规->附加包含目录输入
pthread\include
在这里插入图片描述
5.选择C/C++ ->预处理器->预处理器定义输入
PTW32_STATIC_LIB;
在这里插入图片描述
6.使用2.1.6中的程序编译运行即可。

三、结语

不同的载入方式有着各自的优缺点,请依据项目需要进行选择。

如果你觉得这篇文章对你有帮助,请在文章的左下角点个赞,有问题欢迎留言,谢谢你的反馈。

评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值