c++11 std::call_once只调用一次函数,类似单例模式
清泛原创
std::call_once 保证函数或者一些代码段在并发或者多线程的情况下,始终只会被执行一次,Demo如下:
Do once: called once
#include <iostream>
#include <thread>
#include <mutex>
static std::once_flag g_once_flag;
void do_once() {
std::call_once(g_once_flag, [](){ std::cout << "Do once: called once\n"; });
}
int main() {
std::thread st1(do_once);
std::thread st2(do_once);
std::thread st3(do_once);
std::thread st4(do_once);
st1.join();
st2.join();
st3.join();
st4.join();
}
输出结果(可在代码区点在线编译运行):Do once: called once
上一篇:gdb打印c++ std::vector元素内容
下一篇:浅析Linux段错误:SEGV_MAPERR、SEGV_ACCERR