另一个Pthread中的V8代码将Segfault带来

V8-code in another pthread brings to segfault

本文关键字:Segfault 带来 代码 V8 Pthread 中的 另一个      更新时间:2023-10-16

为什么此代码将segfault带到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代码?

注意,此代码没有任何segfaults。

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

谢谢。

javaScript和节点是单线螺纹。通过在另一个线程中运行该代码,您实际上是在尝试同时运行JS的两个线程。

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

通常,在另一个线程中编写的C 代码只会使用标准的C 类和变量,然后通过uv_async_send使用Libuv的线程支持,然后主线程中的异步处理程序将将值转换为JS处理的V8对象。<</