如何在另一个线程中创建V8对象,然后将其复制回nodejs范围?

时间:2014-02-13 10:25:32

标签: node.js v8 libuv

我必须将非常长的JSON文本解析为JSON对象。 我试着用下面的代码测量执行时间。

var t = process.hrtime()
JSON.parse(jsonStr);
t = process.hrtime(t);

这需要大约0.5毫秒,这是相当多的。因为对于它的V8引擎,nodejs是单线程的,如果这个操作太重了,那么频繁,吞吐量会受到很大影响。

因此我计划在C中编写一个异步JSON.parse作为NodeJS本机插件,使用uv_queue_work让繁重的操作发生在另一个线程中,使用多核并避免占用nodejs main循环。

问题是,不允许从主线程以外的其他线程访问nodeJS中的V8对象。

有没有办法解析文本并在另一个线程中创建V8对象,然后将新创建的V8对象复制到主线程中?

1 个答案:

答案 0 :(得分:1)

  

有没有办法解析文本并在另一个线程中创建V8对象,然后将新创建的V8对象复制到主线程中?

没有好办法。

如果要使用所有内核,最好使用cluster模块生成多个node.js进程,并让每个进程处理不同的请求。