From bf676e5204f5a319bf6e69fe17dcaa86b309ad44 Mon Sep 17 00:00:00 2001 From: yongyuan Date: Wed, 3 Apr 2024 09:58:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9libuv=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=95=B0=E7=9A=84=E7=94=9F=E6=95=88=E6=97=B6?= =?UTF-8?q?=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yongyuan --- BUILD.gn | 32 -------------------------------- src/threadpool.c | 11 ++++++++++- 2 files changed, 10 insertions(+), 33 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index a592a60..f0c8acc 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -358,35 +358,3 @@ if (defined(ohos_lite)) { ] } } - -ohos_ndk_library("libuv_ndk") { - ndk_description_file = "./libuv.ndk.json" - min_compact_version = "1" - output_name = "uv" - output_extension = "so" -} - -ohos_ndk_headers("libuv_header") { - dest_dir = "$ndk_headers_out_dir" - sources = [ "include/uv_ndk/uv.h" ] -} - -ohos_ndk_headers("libuv_uv_header") { - dest_dir = "$ndk_headers_out_dir/uv" - sources = [ - "include/uv/aix.h", - "include/uv/bsd.h", - "include/uv/darwin.h", - "include/uv/errno.h", - "include/uv/linux.h", - "include/uv/os390.h", - "include/uv/posix.h", - "include/uv/stdint-msvc2008.h", - "include/uv/sunos.h", - "include/uv/threadpool.h", - "include/uv/tree.h", - "include/uv/unix.h", - "include/uv/version.h", - "include/uv/win.h", - ] -} diff --git a/src/threadpool.c b/src/threadpool.c index c7294a6..25b9d19 100644 --- a/src/threadpool.c +++ b/src/threadpool.c @@ -38,6 +38,8 @@ #define MAX_THREADPOOL_SIZE 1024 #define TASK_NUMBER_WARNING 50 +#define UV_TRACE_NAME "UV_TRACE" + static uv_rwlock_t g_closed_uv_loop_rwlock; static uv_cond_t cond; @@ -632,7 +634,7 @@ static int uv__work_cancel(uv_loop_t* loop, uv_req_t* req, struct uv__work* w) { uv__loop_internal_fields_t* lfields = uv__get_internal_fields(w->loop); int qos = (ffrt_qos_t)(intptr_t)req->reserved[0]; - if (check_data_valid((struct uv_loop_data*)(w->loop->data)) == 0) { + if (check_data_valid((struct uv_loop_data*)(loop->data)) == 0) { struct uv_parm_t parm; uv_work_t* work_temp = container_of(w, uv_work_t, work_req); parm.work = req; @@ -677,9 +679,15 @@ void uv__work_done(uv_async_t* handle) { QUEUE_APPEND(&lfields->wq_sub[i], &wq); } } + + if (loop->active_reqs.count > TASK_NUMBER_WARNING + && check_data_valid((struct uv_loop_data*)(loop->data)) != 0) { + UV_LOGW("The number of task is too much, task number is %{public}u", loop->active_reqs.count); + } #endif uv_mutex_unlock(&loop->wq_mutex); + uv_start_trace(UV_TRACE_TAG, UV_TRACE_NAME); while (!QUEUE_EMPTY(&wq)) { q = QUEUE_HEAD(&wq); QUEUE_REMOVE(q); @@ -708,6 +716,7 @@ void uv__work_done(uv_async_t* handle) { post_statistic_work(&dump_work->wq); #endif } + uv_end_trace(UV_TRACE_TAG); rdunlock_closed_uv_loop_rwlock(); } -- Gitee