1115.交替打印FooBar
链接1115. 交替打印 FooBar - 力扣LeetCode题解class FooBar { private: int n; std::mutex _mutex; std::condition_variable _cond1; // 用于 foo 等待 std::condition_variable _cond2; // 用于 bar 等待 int _status; // 1 表示打印 foo, 2 表示打印 bar public: FooBar(int n) : n(n), _status(1) {} void foo(std::functionvoid() printFoo) { for (int i 0; i n; i) { std::unique_lockstd::mutex guard(_mutex); _cond1.wait(guard, [this] { return _status 1; }); // printFoo() outputs foo. Do not change or remove this line. printFoo(); _status 2; _cond2.notify_one(); } } void bar(std::functionvoid() printBar) { for (int i 0; i n; i) { std::unique_lockstd::mutex guard(_mutex); _cond2.wait(guard, [this] { return _status 2; }); // printBar() outputs bar. Do not change or remove this line. printBar(); _status 1; _cond1.notify_one(); } } };