c++11 std::call_once只调用一次函数,类似单例模式

来源:清泛原创     2021-06-03 15:52:05    人气:     我有话说( 0 人参与)

std::call_once 保证函数或者一些代码段在并发或者多线程的情况下,始终只会被执行一次,Demo如下: include <iostream> include <thread>static std::once_flag g_once_flag

std::call_once 保证函数或者一些代码段在并发或者多线程的情况下,始终只会被执行一次,Demo如下:
#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

call_once once_flag

注:本文为本站或本站会员原创优质内容,版权属于原作者及清泛网所有,
欢迎转载,转载时须注明版权并添加来源链接,谢谢合作! (编辑:admin)
分享到: