Google Javascript v8 - 多线程

5 javascript multithreading v8

假设我有以下代码

bool run (void)
{
    HandleScope hande_scope;
    Handle<String> source;
    Local<Script> script;
    Persistent<Context> context;

    context = Context::New();
    Context::Scope context_scope(context);

    script = Script::Compile("var a = 1; var b = 2;");
    Local<Value> result = script->Run();

    if (result.IsEmpty())
        return false;
    else
        return true;

}
Run Code Online (Sandbox Code Playgroud)

是否真的无法使用多个线程执行此代码?它似乎HandleScope不是设计用于多线程应用程序.我可以使用v8::Lockerv8::Unlocker方法,但这总是会给我执行跟踪:

t1: a = 1
t1: b = 2

t2: a = 1
t2: b = 2
Run Code Online (Sandbox Code Playgroud)

我希望有人可以给我一个关于让这个代码多线程的暗示,以便可能的执行跟踪可能是这样的:

t1: a = 1
t2: a = 1

t1: b = 2
t2: b = 2
Run Code Online (Sandbox Code Playgroud)

abl*_*eul 1

看看这个帖子。v8 引擎有一个 Locker 类,可让您抢占代码。这样您就可以使用多个线程。