19.C++20中的std::latch和std::barrier

本文详细介绍了C++20中的线程同步工具std::latch和std::barrier,分别讨论了它们的用途、使用方法和区别,强调了std::latch适用于一次性同步,而std::barrier适合多阶段任务同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


欢迎访问个人网络日志🌹🌹知行空间🌹🌹


线程闩std::latch和线程卡std::barrier

线程闩std::latch

线程闩std::latchc++20中引入的类,是为了计数std::ptrdiff_t类型的变量。

std::latch中使用的计数器在创建时初始化,线程工作过程中逐渐减少变量的值,直到为零。

std::latch对象中的值不支持重置或修改。

#include <thread>
#include <latch>
#include <vector>
#include <future>
struct my_data
{
   
    int x;
    int y;
};

my_data make_data(int i){
    return {
   i, i+1}; }
void do_more_stuff() {
   

}
void process_data(my_data &data, unsigned count) 
{
   

}

void foo(){
   
    unsigned const thread_count=10;
    std::experimental::latch done(thread_count<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值