I have an application which has several functions in it. Each function can be called many times based on user input. However I need to execute a small segment of the code within a function only once, initially when the application is launched. When this same function is called again at a later point of time, this particular piece of code must not be executed. The code is in VC++. Please tell me the most efficient way of handling this.
Share
Use global static objects with constructors (which are called before
main)? Or just inside a routineThere are very few cases when this is not fast enough!
addenda
In multithreaded context this might not be enough:
You may also be interested in pthread_once or
constructorfunction__attribute__of GCC.With C++11, you may want std::call_once.
You may want to use
<atomic>and perhaps declarestatic volatile std::atomic_bool initialized;(but you need to be careful) if your function can be called from several threads.But these might not be available on your system; they are available on Linux!