linux线程库 c 库,关于linux的pthread库的使用,我的第一个c/c++线程

今天折腾了比较久,百度了很多文章,因为是在windows下的导入pthread库,折腾了蛮久的,主要是卡在对动态库dll文件和lib、头文件认识之中。估计像新手一枚的我可能才遇到一些这样的坑。

首先,我们先下载它的库。

pthreads-w32 下载地址

我们这里下载最新版本pthreads-w32-2-9-1

下载后解压,可以看到共有三个文件夹

04235252_WgKd.jpg

我们用到的主要是“Pre-built.2”这个文件夹下的三个文件夹,分别是动态链接库、头文件、静态链接库

04235252_DWDM.jpg

这儿网上找过好几种方式,1种是将相关的lib、头文件直接copy到我们visual studio中去, 2是直接在工程中去设置lib目录和依赖。不过前提是我们windows本来没有pthread的动态库dll文件,这时候需要我们将dll文件下的x86和x64对应的dll复制到对应,顾名思义,x86是32位cpu架构,x64是64位架构,而我这儿需要x86对应的是放到c:\windows\syswin64文件中去,x64对应的dll放到system32文件中去,这儿由于自己新手,没理解为什么感觉没对应上,system32不是对应32位么,希望以后可以理解,自己系统和cpu也是64位的,反正只能这样,这儿坑了下,搞了好久,这样放搞定。

我是使用2的方式,直接附代码:

#include

#include

using namespace std;

#pragma comment(lib, "pthreadVC2.lib")//这儿是直接引用的工程里面的pthread相关lib,我这儿用的是x64的,这儿可能要注意,我创建

//工程默认是32位的,需要自己去手动调下,反过来应该使用x86的lib应该直接也就ok

void * thread(void * a)

{

cout << "a==" << *((int*)a) << endl;

for (int i = 0; i < 30; i++)

{

printf("线程执行第 %d 次\n", i + 1);

}

return NULL;

}

void main()

{

pthread_t id;

int value = 100;

int ret = pthread_create(&id, NULL, thread, &value);//创建线程,id相当于唯一标识线程,个人理解,thread指向了上面函数代码地址,                                                                                        //线程的执行方法体,传了一个值用来做实验下。

if (ret != 0)

{

cout << "线程创建错误!" << endl;

exit(-1);

}

for (int i = 0; i < 30; i++)

{

printf("main函数执行第 %d 次\n", i + 1);

}

pthread_join(id, NULL); //

system("pause");//因为没有使用控制台,所以用系统函数使得窗口暂停

}

附设置项目工程对应的cpu可以支持的,我这儿只做了x64的

825d30fb00bbf9e3773b1bca17f3d292.png

设置相应的工程平台我这儿选的x64,用的lib也是对应的x64的lib

780eb947a4b435b8fbb2fc277d04f896.png

把头文件引入进来

3db60fee5e4cc95ab169d6d194517bf8.png

这儿选择平台的问题算属于个坑,需要对号入座。这样就基本大功告成。

人生的第一个c语言线程创建成功了!方式应该还是可以选择1的方式如果作为通用库的话,以后使用也方便。后面有时间继续摸索

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值