当前位置:   article > 正文

C++11 call_once/once_flag 使用_std::once_flag 重置方法

std::once_flag 重置方法

为了保证在多线程环境中某个函数仅会被调用一次,可以使用 std::call_once 保证函数只能被调用一次。
使用 std::call_once 时需要一个 std::once_flag 做为 call_once 的入参。

std::once_flag onceFlag;

void doOnce()
{
    std::call_once(onceFlag, []() {
        std::cout << "Called one time" << std::endl;
        }
    );
}

int main()
{
    std::vector<std::thread> thVec(10);

    for (int i = 0; i < 10; ++i)
    {
        thVec[i] = std::move(std::thread(doOnce));
    }

    for (auto& th : thVec)
    {
        th.join();
    }
}

/*
// ---------------------------------------------------------
// output
// ---------------------------------------------------------
Called one time
*/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

C++11 多线程并发编程目录

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/482198
推荐阅读
相关标签
  

闽ICP备14008679号