class WaitGroup {
public:
void Add(int incr = 1) {
counter += incr;
}
void Done() {
counter--;
if (counter <= 0)
cond.notify_all();
}
void Wait() {
std::unique_lock<std::mutex> lock(mutex);
cond.wait(lock, [&] { return counter <= 0; });
}
private:
std::mutex mutex;
std::atomic<int> counter;
std::condition_variable cond;
};
[N周N语言] C++实现Golang中的WaitGroup
最新推荐文章于 2024-04-13 18:14:55 发布