From d2528b6f70f345431505536620fd28363ca03468 Mon Sep 17 00:00:00 2001 From: MistEO Date: Tue, 11 Oct 2022 10:58:01 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E7=BB=99=E8=B0=83=E7=94=A8=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E5=86=8D=E6=AC=A1=E5=8A=A0=E4=B8=AA=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 019f219ef8108dc7f731fc8103362fe2e031afba. --- src/MeoAssistant/Controller.cpp | 4 +++- src/MeoAssistant/Controller.h | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/MeoAssistant/Controller.cpp b/src/MeoAssistant/Controller.cpp index 9ed2fa9ee5..7c698dafda 100644 --- a/src/MeoAssistant/Controller.cpp +++ b/src/MeoAssistant/Controller.cpp @@ -193,6 +193,7 @@ std::optional asst::Controller::call_command(const std::string& cmd std::optional> sock_buffer; auto start_time = steady_clock::now(); + std::unique_lock callcmd_lock(m_callcmd_mutex); #ifdef _WIN32 @@ -337,7 +338,6 @@ std::optional asst::Controller::call_command(const std::string& cmd // AcceptEx, client_socker is connected and first chunk of data is received DWORD len = 0; if (GetOverlappedResult(reinterpret_cast(m_server_sock), &sockov, &len, FALSE)) { - // unlock after accept accept_pending = false; if (recv_by_socket) sock_data.insert(sock_data.end(), sock_buffer.value().get(), sock_buffer.value().get() + len); @@ -433,6 +433,8 @@ std::optional asst::Controller::call_command(const std::string& cmd } #endif + callcmd_lock.unlock(); + auto duration = duration_cast(steady_clock::now() - start_time).count(); Log.info("Call `", cmd, "` ret", exit_ret, ", cost", duration, "ms , stdout size:", pipe_data.size(), ", socket size:", sock_data.size()); diff --git a/src/MeoAssistant/Controller.h b/src/MeoAssistant/Controller.h index 352dfcf23e..837b619435 100644 --- a/src/MeoAssistant/Controller.h +++ b/src/MeoAssistant/Controller.h @@ -106,6 +106,8 @@ namespace asst void* m_callback_arg = nullptr; std::minstd_rand m_rand_engine; + + std::mutex m_callcmd_mutex; #ifdef _WIN32 ASST_AUTO_DEDUCED_ZERO_INIT_START