[英]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::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
根據v8問題510 ,幾個月前在主干中添加了一個名為“隔離”的功能。 這應該允許在單個進程中的多個(非交互)v8實例。
看看這篇文章 。 v8引擎有一個Locker類,可以讓你搶占你的代碼。 有了這個,你可以使用多個線程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.