我在C ++中编写一个本地节点模块,它将成为C库的绑定。
此库中的某些对象只能由单个线程使用。这意味着,如果我使用uv_queue_work
,我无法确保它们仅由同一个线程使用,因为 - 据我所知 - libuv使用线程池而我还没有找到如何告诉它用于这种工作的线程。
以下是有关情况的一些想法,但我不确定哪种方法是正确的。
这种Node.js模块的推荐做法是什么?
答案 0 :(得分:2)
虽然我首先要说架构不支持通用回调模型是不幸的,但我会接受这是一个无法避免的特殊情况。
您仍然可以完全访问本机模块中的libuv API,因此完全可以创建自己的线程,使用该单个线程来安排所有适用的异步工作。如需快速入门,请查看http://nikhilm.github.io/uvbook/threads.html
操作完成后,您可以将所需的js回调传递给MakeCallback
。这应该允许任何js API交互看起来正常。