c++ latch 使用详解

编程入门 行业动态 更新时间:2024-10-23 15:26:03

c++ latch 使用<a href=https://www.elefans.com/category/jswz/34/1770044.html style=详解"/>

c++ latch 使用详解

c++ latch 使用详解

std::latch c++20

  • 头文件 #include <latch>
  • 作用:提供了一种机制,可以让一个或多个线程等待,直到计数器减为零。
  • 注意事项:
    • latch 为向下计数器,即只能减少不能增加或者重置。这也使得其只能单次使用;
    • 同时调用 latch 的成员函数,除了析构函数,不引入数据竞争;
    • 在同一个线程中,可以多次减少 latch 计数;

std::latch 成员函数

  • count_down:以不阻塞的方式减少计数器。
  • try_wait:测试内部计数器是否等于零。
  • wait:阻塞直至计数器抵达零。
  • arrive_and_wait:减少计数器并阻塞直至它抵达零。

使用示例

  • 线程 1 和 线程 2 模拟工作线程,在线程 1 以及 2 工作完成之后,主线程再继续运行。

    #include <cstdio>
    #include <latch>
    #include <thread>using namespace std::literals;int main()
    {// 初始化 latch 计数为 2std::latch done{2};// 工作线程,模拟一些工作std::jthread t1([&done](){std::this_thread::sleep_for(100ms);done.count_down();printf("thread1 finish work\n");});std::jthread t2([&done](){std::this_thread::sleep_for(100ms);done.count_down();printf("thread2 finish work\n");});// 等待工作线程完成done.wait();printf("all work finished\n");return 0;
    }
    

更多推荐

c++ latch 使用详解

本文发布于:2023-11-14 14:30:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1587817.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:详解   latch

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!