另一个pthread中的V8代码会导致段错误

为什么这段代码会带来SEGFAULT?

int jack_process(jack_nframes_t nframes, void *arg) { Local<Value> test = Local<Value>::New( Number::New(2) ); return 0; } 

jack_process正在另一个pthread中运行。 我怎样才能做到这一点? 如何在另一个pthread中运行V8代码?

请注意,这段代码没有任何段错误。

 int jack_process(jack_nframes_t nframes, void *arg) { Local<Value> test; return 0; } 

谢谢。

JavaScript和Node是单线程的。 通过在另一个线程中运行该代码,本质上是试图同时运行两个JS线程。

V8允许你在线程上运行两个JS实例,但是它们需要完全独立的Isolate实例。

通常,在另一个线程中编写的C ++代码将只使用标准的C ++类和variables,然后通过uv_async_send使用libuv的线程支持 ,然后主线程中的asynchronous处理程序将这些值转换为V8对象以进行JS处理。