mirror of
https://github.com/ceph/ceph
synced 2025-02-21 09:57:26 +00:00
common/Finisher: only queue empty only wake up waiter.
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
This commit is contained in:
parent
d7ca34e12f
commit
754f3aa445
@ -193,18 +193,22 @@ public:
|
||||
ContextQueue(Mutex& mut, Cond& con) : mutex(mut), cond(con) {}
|
||||
|
||||
void queue(list<Context *>& ls) {
|
||||
bool empty = false;
|
||||
{
|
||||
std::scoped_lock l(q_mutex);
|
||||
if (q.empty()) {
|
||||
q.swap(ls);
|
||||
empty = true;
|
||||
} else {
|
||||
q.insert(q.end(), ls.begin(), ls.end());
|
||||
}
|
||||
}
|
||||
|
||||
mutex.Lock();
|
||||
cond.SignalOne();
|
||||
mutex.Unlock();
|
||||
if (empty) {
|
||||
mutex.Lock();
|
||||
cond.SignalOne();
|
||||
mutex.Unlock();
|
||||
}
|
||||
|
||||
ls.clear();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user