美文网首页
callonce/one_flag

callonce/one_flag

作者: _gentle | 来源:发表于2018-07-17 22:40 被阅读0次

如果要保证某个函数在多线程的环境下只被调用一次,可以使用callonce,一个典型的场景就是初始化。callonce需要once_flag作为入参。使用时需要包含头文件<mutex>

#include<iostream>
#include<thread> 
#include<mutex>

std::once_flag flag;
std::once_flag flag2;
void f() {
    std::cout << "call once" << std::endl;
}
void do_once() {
    std::call_once(flag, f); 
    std::call_once(flag2, f); 
}

int main() {
    //error std::call_once不可作为参数 
    //std::thread t1(std::call_once(flag, []{std::cout << "call once" << std::endl;}));
    std::thread t1(do_once);
    std::thread t2(do_once);
    t1.join();
    t2.join();
}

其输出为

call once
call once

相关文章

  • callonce/one_flag

    如果要保证某个函数在多线程的环境下只被调用一次,可以使用callonce,一个典型的场景就是初始化。callonc...

网友评论

      本文标题:callonce/one_flag

      本文链接:https://www.haomeiwen.com/subject/nwcnpftx.html