std:call_once是C++11引入的新特性,如需使用,只需要#include <mutex>即可,简单来说std:call_once的作用,确保函数或代码片段在多线程环境下,只需要执行一次,常用的场景如Init()操作或一些系统参数的获取等。
相对来说,std::call_once用法比较简单,配合std::once_flag即可实现
C++ call_one多线程调用只执行一次可用于初始化_c++ 只运行一次的线程-优快云博客
#include <iostream>
#include <thread>
#include <mutex>
void SystemInit(){
cout << "SystemInit......" << endl;
}
void SystemInitCallOnce(){
// 记录调用的状态
static once_flag flag;
// 多次调用只执行一次
call_once(flag,SystemInit);
}
int main(int argc,char* argv[])
{
for(int i = 0;i<10;i++)
{
thread th(SystemInitCallOnce);
th.detach();
}
cout << "等待10s...."<< endl;
this_thread::sleep_for(10000ms);
cout << "等待10s结束"<< endl;
return 0;
}
本文介绍了C++11中的std:call_once特性,它用于保证在多线程环境中函数或代码片段只执行一次,常用于初始化操作。通过std::once_flag配合,展示了如何在C++程序中实现这一功能。
815

被折叠的 条评论
为什么被折叠?



