Skip to content

Commit 493d666

Browse files
authored
Add WFFacilities::WaitGroup::add(). (sogou#1751)
1 parent 673f6b4 commit 493d666

2 files changed

Lines changed: 15 additions & 9 deletions

File tree

src/manager/WFFacilities.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,10 @@ class WFFacilities
6666
WaitGroup(int n);
6767
~WaitGroup();
6868

69-
void done();
7069
void wait() const;
7170
std::future_status wait(int timeout) const;
71+
void add(int n);
72+
void done();
7273

7374
private:
7475
static void __wait_group_callback(WFCounterTask *task);

src/manager/WFFacilities.inl

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -192,14 +192,6 @@ inline WFFacilities::WaitGroup::~WaitGroup()
192192
this->task->count();
193193
}
194194

195-
inline void WFFacilities::WaitGroup::done()
196-
{
197-
if (--this->nleft == 0)
198-
{
199-
this->task->count();
200-
}
201-
}
202-
203195
inline void WFFacilities::WaitGroup::wait() const
204196
{
205197
if (this->nleft < 0)
@@ -222,6 +214,19 @@ inline std::future_status WFFacilities::WaitGroup::wait(int timeout) const
222214
return this->future.wait_for(std::chrono::milliseconds(timeout));
223215
}
224216

217+
inline void WFFacilities::WaitGroup::add(int n)
218+
{
219+
if ((this->nleft += n) == 0)
220+
{
221+
this->task->count();
222+
}
223+
}
224+
225+
inline void WFFacilities::WaitGroup::done()
226+
{
227+
this->add(-1);
228+
}
229+
225230
inline void WFFacilities::WaitGroup::__wait_group_callback(WFCounterTask *task)
226231
{
227232
auto *pr = static_cast<WFPromise<void> *>(task->user_data);

0 commit comments

Comments
 (0)