博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于linux的pthread库的使用,我的第一个c/c++线程
阅读量:6232 次
发布时间:2019-06-21

本文共 1476 字,大约阅读时间需要 4 分钟。

hot3.png

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

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

pthreads-w32 下载地址

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

 

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

        

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

          

这儿网上找过好几种方式,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 <iostream>

#include <pthread.h>
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的

c842ee1e74a070a3a9e863c54f4a02f1255.jpg

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

0afc53923963b314e9dadcba22c7e666ae7.jpg

把头文件引入进来

ff05e828c7535ecd08262716efb3e857746.jpg

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

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

 

转载于:https://my.oschina.net/u/3318187/blog/1942566

你可能感兴趣的文章
OpenJudge/Poj 1316 Self Numbers
查看>>
37:密码截取(回文串manacher算法)
查看>>
sub,dl,dt,排版,横向滚动条,浮动元素居中,box-sizing
查看>>
「题单」网络流『费用流』
查看>>
红黑树 C++实现
查看>>
root登录不进去 dropbear ssh
查看>>
AC自动机跟随Kuangbing学习笔记
查看>>
[20190507]sga_target=0注意修改_kghdsidx_count设置.txt
查看>>
laya的skeleton骨骼动画事件响应问题
查看>>
oracle wm_concat 拼接乱码 显示问号等
查看>>
LightOJ 1027 Dangerous Maze
查看>>
hive --桶
查看>>
event 实现两个程序的交互
查看>>
gulp之压缩css,less转css,浏览器实时刷新【原创】
查看>>
[转] mysql分区性能初探
查看>>
1.6给定一个由N*N矩阵表示的图像,其中每个像素的大小为4字节,编写一份方法,将图像旋转90度。不占用额外内存空间能否做到?...
查看>>
Python 使用有道翻译
查看>>
python django day 5 database 1
查看>>
A2dp sink 初始化流程源码分析
查看>>
使用外部配置文件
查看>>