簡體   English   中英

Google Javascript v8 - 多線程

[英]Google Javascript v8 - multithreading

假設我有以下代碼

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::Lockerv8::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

根據v8問題510 ,幾個月前在主干中添加了一個名為“隔離”的功能。 這應該允許在單個進程中的多個(非交互)v8實例。

看看這篇文章 v8引擎有一個Locker類,可以讓你搶占你的代碼。 有了這個,你可以使用多個線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM