Я реализовал WaitGroup на C++, предполагая, что:
- пользователь должен убедиться, что счетчик значение не опускается ниже нуля.
- WaitGroup можно использовать повторно.
Код: Выделить всё
class WaitGroup {
public:
void Add(size_t count) {
lock_guard lock(mutex_);
count_ += count;
}
void Done() {
lock_guard lock(mutex_);
if (--count_ == 0) {
cv_.notify_all();
}
}
void Wait() {
unique_lock lock(mutex_);
cv_.wait(lock, [this] { return count_ == 0; });
}
private:
size_t count_{0};
mutex mutex_;
condition_variable cv_;
};
Как я могу формально проверить корректность моей реализации WaitGroup?
Каков общий способ доказать такие вещи?< /п>
Подробнее здесь: https://stackoverflow.com/questions/786 ... ation-in-c