When using functions from addon blocks the main process node js?
還沒有人認領這個 Issue。
評估
研究方向
Start with the readDataSerial N-API wrapper shown in the issue and trace the blocking Ibox_Controller_ReadData call. Review the Node.js addon guidance for asynchronous work, then determine how the result is delivered without blocking the main process. Done means the long-running read no longer prevents the Node.js main thread from processing other work.
由索引模型根據 Issue 內容生成。
描述
Implemented a wrapper for the function using N-API. It works, but the problem is that when it works the main thread of the node does not work? How can I rewrite this function so that it does not block the main thread? What do I need to use async, callback, thread for this?
napi_value readDataSerial(napi_env env, napi_callback_info info) {
napi_status status;
size_t argc = 1;
napi_value args[1], object;
napi_value id, data;
status = napi_get_cb_info(env, info, &argc, args, NULL, NULL);
assert(status == napi_ok);
if (argc < 1) {
napi_throw_type_error(env, NULL, "Wrong number of arguments");
return NULL;
}
//....
Ibox_ReadData *context = calloc(1, sizeof(Ibox_Context));
//this function takes a long time and blocks the main process
Ibox_Result_Submit *submitResult = Ibox_Controller_ReadData(context);
status = napi_create_object(env, &object);
status = napi_create_string_utf8(env, submitResult->id, NAPI_AUTO_LENGTH, &id);
status = napi_set_named_property(env, object, "id", id);
status = napi_create_string_utf8(env, submitResult->date, NAPI_AUTO_LENGTH, &date);
status = napi_set_named_property(env, object, "data", data);
assert(status == napi_ok);
return object;
})
- 主要語言
- C++
- 星號
- 2.6k
- 分支
- 598
- PR 合併指標
- 30 天內沒有已合併 PR
環境準備
- 沒有 Dockerfile 或 Docker Compose 檔案
- 有 Pull Request 範本
- 閱讀貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
nodejs/node-addon-examples 的其他 Issue
-
enhancement
難度 4/5 3-5 天 新手友好度 38/100
nodejs/node-addon-examples#585 · 1 個 reaction ·
-
難度 3/5 1-2 天 新手友好度 38/100
nodejs/node-addon-examples#530 · 1 則留言 ·
-
難度 4/5 3-5 天 新手友好度 35/100
nodejs/node-addon-examples#445 ·
-
難度 3/5 1-2 天 新手友好度 32/100
nodejs/node-addon-examples#444 · 1 則留言 ·
-
難度 3/5 1-2 天 新手友好度 35/100
nodejs/node-addon-examples#381 ·
查看 nodejs/node-addon-examples 的全部 Issue
相似的 Issue
-
Code: Performance
難度 1/5 1 小時以內 新手友好度 88/100
CrimsonCrossBunker/Cataclysm-Cleanwater-Bomb#1167 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 76/100
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 70/100
meshcore-dev/MeshCore#3760 · 1 則留言 ·
維護者通常 1 天內回覆
-
難度 1/5 1 小時以內 新手友好度 88/100
deepseek-ai/DeepGEMM-Ascend#29 ·
維護者通常 1 天內回覆
-
ci Windows
難度 2/5 1-3 小時 新手友好度 78/100
aethersdr/AetherSDR#7003 · 1 則留言 ·
維護者通常 1 天內回覆