std::thread 详解

发布于 2023-12-03 07:22:41 字数 2462 浏览 25 评论 0

thread 构造方式

  • 默认构造
    std::thread T1;
  • 初始化构造函数
    std::thread T2(func,args...)
  • 深拷贝构造函数
    std::thread T3(T2) 注意 被标注 delete 应舍弃
  • Move 构造函数
    std::thread T4(std::move(T2)) 注意 std::move 之后 并不存在实例化之后的 T2 了,类似于
    std::string a="Example;"
    std:string b(std::move(a));
    此时 a 等同于 string a

赋值操作

  • std::move 赋值操作
    std::thread T5 = std::thread(func,args)
  • 深拷贝赋值操作
    std::thread T6 = T5 注意 被标注 delete 应舍弃
函数名功能返回值
get_id()获取线程 IDstd::thread::id
join()阻塞当前线程直到调用的线程执行完毕void
joinable()检查线程是否可被 joinbool
detach()使该线程与当前线程分离单独运行void
swap()交换线程对象所代表的底层句柄void
native_handle()返回线程句柄native_handle_type
hardware_concurrency当前平台所支持的并发数目static unsigned int

this_thread

函数名功能返回值
yield()当前进程放弃执行void
sleep_until线程休眠直到指定的时间点void
sleep_for线程休眠指定的时间void

标注

  • join() 和 detach() 的区别
    join() 会阻塞当前进程等待指定进程结束。在此期间 joinable()==1;
    detach() 一旦脱离 除非使用其他方式(信号量 etc) 否则无法获知运行状态,在此期间 joinable()==0;

  • thread 构建之后会立即运行。
    此后的 join() detach 只能在线程运行期间有效。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

山有枢

暂无简介

文章
评论
28 人气
更多

推荐作者

夢野间

文章 0 评论 0

百度③文鱼

文章 0 评论 0

小草泠泠

文章 0 评论 0

zhuwenyan

文章 0 评论 0

weirdo

文章 0 评论 0

坚持沉默

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文