我正在处理v8 javascript引擎,为我大学的新生开发学习环境,并且我加快了这一步:
d8.cc:309
char* input = NULL;
{ // Release lock for blocking input.
Unlocker unlock(isolate);
input = fgets(buffer, kBufferSize, stdin);
}
答案 0 :(得分:5)
就语言标准而言,整体结构(即未命名的块)被称为复合语句。它有助于引入新的范围。
在C ++中,通常有两种用途:
将局部变量限制为特定的代码段;目的是尽量减少范围“污染”,并使代码的读者更容易。 (在C和Java等其他语言中也可以实现相同的目标。)
紧紧控制对象/资源的生命周期,因为范围局部变量的析构函数将在范围的末尾自动调用。这可以用于几个聪明的事情,例如自动关闭文件句柄,释放互斥锁等。所以你可能听到人们谈论例如作用域的互斥锁。 (C和Java没有析构函数,所以这个概念不会翻译。)
答案 1 :(得分:3)
它没有名称,它是一个代码块。大括号在Unlocker控制的锁上设置了明确的生命周期。
这是C和C ++中非常有效的技术。在C ++中可以看到它更有可能使用RAII来限制对象的生命周期并提供及时释放资源(例如锁),尽管在C中使用它可以使变量的生命周期清晰可见阅读器。