Google Javascript 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;

}

Действительно ли это верно, что нельзя выполнить этот код с помощью нескольких потоков? Это походит HandleScope не разработан, чтобы использоваться в многопоточных приложениях. Я могу использовать v8::Locker и v8::Unlocker методы, но это всегда давало бы мне трассировки выполнения как это:

t1: a = 1
t1: b = 2

t2: a = 1
t2: b = 2

Я надеюсь, что кто-то может дать мне подсказку при получении этого кода, многопоточного так, чтобы возможной трассировке выполнения могло понравиться это:

t1: a = 1
t2: a = 1

t1: b = 2
t2: b = 2
5
задан ROMANIA_engineer 13 December 2017 в 20:44
поделиться

1 ответ

Посмотрите этот пост . У движка v8 есть класс Locker, который позволяет вам вытеснять ваш код. При этом вы можете использовать несколько потоков.

1
ответ дан 15 December 2019 в 06:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: