我有一个具有多个功能的应用程序。每个功能都可以根据用户输入多次调用。但是,在应用程序启动时,我只需要在函数中执行一小段代码即可。在以后的某个时间再次调用此相同函数时,不得执行此特定代码段。该代码在VC++中。请告诉我最有效的处理方法。
最佳答案
将全局静态对象与构造函数一起使用(在main
之前调用)?或者只是在例程中
static bool initialized;
if (!initialized) {
initialized = true;
// do the initialization part
}
在极少数情况下,这还不够快!
附加物
在多线程上下文中,这可能还不够:
您可能也对pthread_once或
constructor
function __attribute__
of GCC感兴趣。对于C++ 11,您可能需要std::call_once。
如果可以从多个线程中调用函数,则可能要使用
<atomic>
并声明static volatile std::atomic_bool initialized;
(但需要注意)。但是这些可能在您的系统上不可用。它们在Linux上可用!