Skip to content

Commit dfff205

Browse files
committed
优化调用队列锁操作。
1 parent 71c3b54 commit dfff205

2 files changed

Lines changed: 9 additions & 5 deletions

File tree

uv/Async.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,16 @@ void Async::runInThisLoop(DefaultCallback callback)
4747

4848
void uv::Async::process()
4949
{
50-
std::lock_guard<std::mutex> lock(mutex_);
51-
while (!callbacks_.empty())
50+
std::queue<DefaultCallback> callbacks;
5251
{
53-
auto func = callbacks_.front();
52+
std::lock_guard<std::mutex> lock(mutex_);
53+
callbacks_.swap(callbacks);
54+
}
55+
while (!callbacks.empty())
56+
{
57+
auto func = callbacks.front();
5458
func();
55-
callbacks_.pop();
59+
callbacks.pop();
5660
}
5761
}
5862

uv/include/uv11.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#ifndef UV_UV11_H
1212
#define UV_UV11_H
1313

14-
#define UV_CPP_VERSION "1.5.2"
14+
#define UV_CPP_VERSION "1.5.3"
1515

1616
#include "Async.h"
1717
#include "Signal.h"

0 commit comments

Comments
 (0)