本文使用独占锁、原子类型、条件变量,实现线程间同步,API接口模仿Go语言中的 WaitGroup
#ifndef __WAITGROUP_H_
#define __WAITGROUP_H_
#include <mutex>
#include <atomic>
#include <condition_variable>
namespace algo {
class WaitGroup {
public:
WaitGroup() {
m_counter = 0;
}
void Add(int count = 1) {
m_counter += count;
}
void Done() {
m_counter--;
if (m_counter.load() <= 0) {
m_c