题
我正在编写的程序中有几个函数,它们使用我需要用非常慢的函数计算的值。每次重新运行程序时该值都会改变,因此我不能只存储静态值。下面是一个例子。
void this_gets_called_frequently()
{
static int value = slow_function();
//do stuff with the above value
}
我这里的主要问题不是程序不工作,而是整洁。我真的不想初始化一个全局变量并将值存储在其中,因为它一旦计算就不会改变。按照上面的方式使用 static 关键字是否只会调用上面的函数计算一次?在那里添加 const 关键字会有帮助吗?
谢谢大家,这个问题已经完美回答了!
解决方案
是的,本地的初始化 static
变量最多会发生一次(尽管我记得某些编译器版本可能存在多线程问题)。const
不是必需的,在这种情况下,这主要是可读性和品味的问题。
其他提示
按照上面的方式使用 static 关键字是否只会调用上面的函数计算一次?
是的,在第一次调用时 this_gets_called_frequently
在那里添加 const 关键字会有帮助吗?
不。但添加 const
为文档价值。
使用可以使用C ++ 11的线程局部变量,如果您的编译器中可用。如果您在Windows上,则可以使用类似的TlsAlloc
API。自从Win32的黎明以来就在那里。
不隶属于 StackOverflow