我正在用 C++ 编写一个本地节点模块,它将成为 C 库的绑定。
此库中的某些对象只能由单个线程使用。这意味着如果我使用uv_queue_work
我不能确保它们只被同一个线程使用,因为 -据我所知- libuv 使用一个线程池,我无法找出如何告诉它哪个线程用于此类工作。
以下是针对这种情况的一些想法,但我不确定哪种方法是正确的。
- 只需使所有方法同步 - 不幸的是,这会超出节点的目的和概念,所以我不想这样做
- 创建一个自定义线程并在其上执行我的代码 - 这会破坏 libuv 线程池的目的并需要更多工作
- 以某种方式告诉 libuv 在其线程池中的同一线程上执行同一对象的操作 - 我在文档中没有找到执行此操作的方法
这种 Node.js 模块的推荐行动方案是什么?