美文网首页
2019-03-28

2019-03-28

作者: 哎pear | 来源:发表于2019-03-28 23:11 被阅读0次

从概念上理解,作用域可以看成是一个句柄的容器,在一个作用域里面可以有很多很多个句柄(也就是说,一个 scope 里面可以包含很多很多个 v8 引擎相关的对象),句柄指向的对象是可以一个一个单独地释放的,但是很多时候(真正开始写业务代码的时候),一个一个地释放句柄过于 繁琐,取而代之的是,可以释放一个 scope,那么包含在这个 scope 中的所有 handle 就都会被统一释放掉了。

Scope 在 v8.h 中有这么几个:HandleScope,Context::Scope。

HandleScope 是用来管理 Handle 的,而 Context::Scope 仅仅用来管理 Context 对象。

代码像下面这样:

// 在此函数中的 Handle 都会被 handleScope 管理HandleScope handleScope;// 创建一个 js 执行环境 ContextHandle context = Context::New();  Context::ScopecontextScope(context);// 其它代码

一般情况下,函数的开始部分都放一个 HandleScope,这样此函数中的 Handle 就不需要再理会释放资源了。 而 Context::Scope 仅仅做了:在构造中调用 context->Enter(),而在析构函数中调用 context->Leave()。

相关文章

网友评论

      本文标题:2019-03-28

      本文链接:https://www.haomeiwen.com/subject/hfwhbqtx.html