C++多线程,pthread与std::thread记录

文章讲述了在Ubuntu20.4和Qt5.14.2环境中使用pthread创建线程可能遇到的权限问题,推荐使用C++11的std::thread,并介绍了其对线程操作的封装。
摘要由CSDN通过智能技术生成

pthread创建多线程函数

pthread_create(&thread, &attr, f, static_cast<void *>(&args));

(1)&thread:事先创建好的pthread_t类型的参数,成功时tidp指向的内存单元被设置为新创建线程的线程ID。

(2)&attr:用于定制各种不同的线程属性。例如优先级策略等。

(3)f:新创建线程从此函数开始运行。

(4)&args:tart_rtn函数的参数,无参数时设为NULL即可,有参数时输入参数的地址,当多于一个参数时应当使用结构体传入。

当返回值为0时,代表线程创建成功,返回其他值则失败。

在Ubuntu20.4,Qt5.14.2环境下,使用pthread创建线程时会失败,具体原因为:当参数2不为NULL,即有自定义线程属性传入时,pthread创建线程需要用sudo的方式打开Qt,即需要较高权限。因此,创建多线程时不需要自定义线程属性,可以将参数2赋为NULL即可无需sudo权限打开Qt。

或者直接使用C++11中的std::thread。

C++11中加入了<thread>头文件,此头文件主要声明了std::thread线程类。C++11的标准类std::thread对线程进行了封装,定义了C++11标准中的一些表示线程的类、用于互斥访问的类与方法等。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值