首页 > 编程语言 >c++11 call_once & once_flag

c++11 call_once & once_flag

时间:2023-07-31 20:46:58浏览次数:46  
标签:11 std c++ flag call once

#include <iostream>
#include <mutex>
using namespace std;

void once_fun(std::once_flag &&flag)
{
    std::call_once(flag, []()
                   { cout << "message from once fun" << endl; });
}

void once_fun1(std::once_flag *flag)
{
    std::call_once(*flag, []()
                   { cout << "message from once fun 1" << endl; });
}

int foo(const char *msg)
{
    cout << "message from foo: " << msg << endl;
    return 123;
}

void CallOnceTest()
{
    std::once_flag flag;
    once_fun(std::move(flag)); // message from once fun
    once_fun(std::move(flag)); // no output

    std::once_flag flag1;
    once_fun1(&flag1); // message from once fun 1
    once_fun1(&flag1); // no output

    std::once_flag flag2;
    std::call_once(flag2, foo, "abc"); // message from foo: abc
    std::call_once(flag2, foo, "efg"); // no output
}

标签:11,std,c++,flag,call,once
From: https://www.cnblogs.com/BuzzWeek/p/17594426.html

相关文章

  • AcWing,第114场周赛-5058双色球
    5058.双色球约翰和贝茜玩抽球游戏。一个盒子中有n个白球和m个黑球。双方轮流行动,由约翰先行。每当轮到一方行动时,其从盒中随机抽出一个球,盒子中的每个球被抽出的概率相同。率先抽出白球的一方获胜。此外,由于贝茜的手比较笨拙,所以每当她抽出一个球后,盒子都会剧烈摇晃,随后就......
  • v831-T113-c-udp发送篇
    又来分析udp,目标是从v831中获取到的图片信息发送给t113然后再屏幕上显示出来挫折一t113作为服务端,再接收到客户端发来的数据后会自动设置clinetaddr,那么我们就不再需要取从新aton这个ip地址了,直接使用clientaddrintudp_send(void){ //if(0==inet_aton("192.168.1.118",......
  • HDU1151—Air Raid(最小路径覆盖)
    【\(HDU1151\)】—\(Air\)\(Raid\)(最小路径覆盖)题解描述给定一个\(DAG\)(有向无环图),选定最少的点,使得从这些点出发可以覆盖每一条路径(即每个点都经过至少一遍)。输入:24334132333131223输出21以测试数据为例,\(4\)个路口,\(3\)条路。现派伞兵经过所有......
  • FX110网:上周多个外汇平台违法被警告处罚!
    近期,国外的监管机构就外汇平台的一系列违法行为做出了警告及处罚,具体有BDSwiss遭CySEC罚款10万欧、德国BaFin对PopinTradingLTD展开调查、意大利CONSOB非法金融网站封禁数量增至930。让我们一起回顾下吧,具体新闻如下!1、违反初始保证金相关要求!BDSwiss遭CySEC罚款10万欧塞浦路......
  • C++11新特性
    一.智能指针1.std::shared_ptrshared_ptr使用了引用计数,每一个shared_ptr的拷贝都指向相同的内存,每次拷贝都会触发引用计数+1,每次生命周期结束析构的时候引用计数-1,在最后一个shared_ptr析构的时候,内存才会释放。2.std::weak_ptrweak_ptr是用来监视shared_ptr的生命周......
  • 11-MySQL数据库的存储过程
    11-MySQL数据库的存储过程课程目标了解存储过程简介、关于MySQL的存储过程。掌握MySQL存储过程的创建、调用、查询、修改、删除、控制语句、基本函数。11.1存储过程简介我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(StoredProcedure)是一组为了完......
  • 微软开测“Moment4”启动包:Win11 23H2要来了
    近日,有用户在Win11最新的7月累积更新中发现,更新文件中已经开始出现了对“Moment4”的引用。具体来说,在7月累积更新中,微软加入了“Microsoft-Windows-UpdateTargeting-ClientOS-SV2Moment4-EKB”“Microsoft-Windows-23H2Enablement-Package”的启用包。类似的情况曾经在Windows......
  • 为Win12做准备?微软Win11 23H2将集成AI助手:GPT4免费用
    微软日前确认今年4季度推出Win1123H2,这是Win11第二个年度更新。Win1123H2具体有哪些功能升级,现在还不好说,但它会集成微软的Copilot,它很容易让人想到多年前的“曲别针”助手,但这次是AI技术加持的,Copilot就是BingAI聊天的Windows桌面版,基于GPT-4打造,它可以帮助你自动化各种任务,......
  • 110. 平衡二叉树
    给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例1:输入:root=[3,9,20,null,null,15,7]输出:true#Definitionforabinarytreenode.#classTreeNode:#def__init__(se......
  • Win11桌面时不时卡顿无响应
    一、问题描述:在待机或正常使用过程中,时不时遇到桌面无响应的情况,但鼠标正常移动。网络上大致给出以下几种处理思路:1.移除拓展坞,集线器2.打开设备管理器,通用串行总线控制器,对里面每个设备的:“允许计算机关闭此设备以节约电源”,把勾去除3.通过命令彻底卸载小组件4.更换无线网卡驱......