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

清泛原创
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

分享到:
评论加载中,请稍后...
创APP如搭积木 - 创意无限,梦想即时!
回到顶部