我有一个具有多个功能的应用程序。每个功能都可以根据用户输入多次调用。但是,在应用程序启动时,我只需要在函数中执行一小段代码即可。在以后的某个时间再次调用此相同函数时,不得执行此特定代码段。该代码在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上可用!

10-05 21:00