假设我有以下代码片段:
我希望有人能够给我指点,使得这段代码可以多线程运行,这样可能的执行跟踪如下所示:
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