在本地节点模块中,我如何确保我的异步代码始终在同一线程上运行
In a native node module, how can I make sure that my async code is always running on the same thread?
我正在用c++编写一个本地节点模块,这将是一个C库的绑定。
本标准库中的一些对象只能由单个线程使用。这意味着,如果我使用uv_queue_work
,我不能确保它们只由同一个线程使用,因为- 据我所知 - libuv使用线程池,我还没能找到如何告诉它使用什么线程用于这种工作。
这里有一些针对这种情况的想法,但我不确定哪个是正确的方法。
- 简单地使所有的方法同步-这将不幸地违背节点的目的和概念,所以我宁愿不 创建一个自定义线程并在上面执行我的代码——这将破坏libuv线程池的目的,并且需要更多的工作
- 告诉libuv以某种方式在其线程池中的同一线程上执行相同对象的操作-我在文档中没有找到这样做的方法
对于这种Node.js模块,推荐的操作过程是什么?
虽然我首先要说架构不支持通用回调模型是不幸的,但我将接受这是一个无法避免的特殊情况。
您仍然可以在本地模块中完全访问libuv API,因此完全可以创建自己的线程,使用该线程来调度所有适用的异步工作。要快速入门,请查看http://nikhilm.github.io/uvbook/threads.html
操作完成后,您可以将所需的js回调传递给MakeCallback
。
相关文章:
- 元素在我的代码中不会.fadeTo.Don'I don’我不知道;s错误的JavaScript、JQuery、H
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 验证我的代码json
- 如何创建更好的方式来维护基于我的代码访问的最后一个页面
- 我的jquery代码不起作用.为什么?
- 为什么不是'我的函数在解析云代码中工作吗?当我在Angular和Express中测试时,它是有效的
- 我不知道为什么我的代码是错误的?又有什么错
- 为什么我的解析云代码请求'未经授权'
- 为什么不't我的ruby代码与javascript文件一起插入
- 我的html表单无法验证.请参阅代码片段中的html代码和java脚本
- 我需要一个jQuery函数来只工作在700px以上的屏幕大小,无法在我的代码中发现错误
- I'我不知道为什么我的代码没有'不起作用
- 如何使用我的Jquery代码创建委托事件侦听器
- 我不知道此代码中的这些符号是什么意思.十进制到二进制
- 什么正在取代我的'以及“;javascript代码中使用'和&”;
- 在上传之前,我可以在代码中的哪里将文件扩展名更改为小写
- 为什么动态加载的事件在我的代码中不能正常工作
- 我的Javascript代码出错
- 如何禁用我的切换按钮?这是我的代码
- 如何分离代码:我的控制器是否做了太多工作