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
-
难度 2/5 1-3 小时 新手友好度 70/100
meshcore-dev/MeshCore#3760 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 88/100
deepseek-ai/DeepGEMM-Ascend#29 ·
维护者通常 1 天内回复
-
documentation
难度 2/5 1-3 小时 新手友好度 70/100
EchoTools/nevr-runtime#2042 ·
维护者通常 1 天内回复
-
Download size and speed show scientific notation between 1000 and 1023 units可能已有人在做 @RaphaelFakhri 今天认领。 未关闭
难度 2/5 1 小时以内 新手友好度 88/100
kiwix/kiwix-desktop#1570 ·
维护者通常 1 天内回复
-
Device Request
难度 2/5 半天 新手友好度 62/100
dresden-elektronik/deconz-rest-plugin#8686 ·
维护者通常 1 天内回复