gutil 的 sysinfo.cc 在计算 num_cpus 时是否缺少右括号?
Is gutil's sysinfo.cc missing a closing bracket when calculating num_cpus?
我有 gutil 的 sysinfo.cc 文件,与此文件相同:
https://github.com/cloudera/kudu/blob/master/src/kudu/gutil/sysinfo.cc#L248
我想知道 InitializeSystemInfo() 函数是否适用于 Linux,因为我对 C++ 不太熟悉。
我在第 248 行找不到这个 do 语句的右括号,所以它还能正确计算 numcpus 吗?
do { // we'll exit when the last read didn't read anything
// Move the next line to the beginning of the buffer
const int oldlinelen = strlen(line);
if (sizeof(line) == oldlinelen + 1) // oldlinelen took up entire line
line[0] = '[=12=]';
else // still other lines left to save
memmove(line, line + oldlinelen+1, sizeof(line) - (oldlinelen+1));
// Terminate the new line, reading more if we can't find the newline
char* newline = strchr(line, '\n');
if (newline == NULL) {
const int linelen = strlen(line);
const int bytes_to_read = sizeof(line)-1 - linelen;
CHECK_GT(bytes_to_read, 0); // because the memmove recovered >=1 bytes
chars_read = read(fd, line + linelen, bytes_to_read);
line[linelen + chars_read] = '[=12=]';
newline = strchr(line, '\n');
}
if (newline != NULL)
*newline = '[=12=]';
右大括号在第 305 行。
此文件中的编程风格难以阅读,因为该函数有几个屏幕那么长并且使用了几个 #ifdef
分支。这是必要的。此源文件从其余代码中隐藏了特定于操作系统的部分,因此它看起来可能很复杂。
其他代码可以访问 cpuinfo_cycles_per_second
变量,这使得 API.
非常简单
我有 gutil 的 sysinfo.cc 文件,与此文件相同: https://github.com/cloudera/kudu/blob/master/src/kudu/gutil/sysinfo.cc#L248 我想知道 InitializeSystemInfo() 函数是否适用于 Linux,因为我对 C++ 不太熟悉。
我在第 248 行找不到这个 do 语句的右括号,所以它还能正确计算 numcpus 吗?
do { // we'll exit when the last read didn't read anything
// Move the next line to the beginning of the buffer
const int oldlinelen = strlen(line);
if (sizeof(line) == oldlinelen + 1) // oldlinelen took up entire line
line[0] = '[=12=]';
else // still other lines left to save
memmove(line, line + oldlinelen+1, sizeof(line) - (oldlinelen+1));
// Terminate the new line, reading more if we can't find the newline
char* newline = strchr(line, '\n');
if (newline == NULL) {
const int linelen = strlen(line);
const int bytes_to_read = sizeof(line)-1 - linelen;
CHECK_GT(bytes_to_read, 0); // because the memmove recovered >=1 bytes
chars_read = read(fd, line + linelen, bytes_to_read);
line[linelen + chars_read] = '[=12=]';
newline = strchr(line, '\n');
}
if (newline != NULL)
*newline = '[=12=]';
右大括号在第 305 行。
此文件中的编程风格难以阅读,因为该函数有几个屏幕那么长并且使用了几个 #ifdef
分支。这是必要的。此源文件从其余代码中隐藏了特定于操作系统的部分,因此它看起来可能很复杂。
其他代码可以访问 cpuinfo_cycles_per_second
变量,这使得 API.