If I desire to run a piece of code in a function, only from the second invocation of the function onwards,
Questions:
- Is there something wrong to do that? 
- How can I possibly achieve this ? Is using a static variable to do this a good idea ? 
If I desire to run a piece of code in a function, only from the second invocation of the function onwards,
Questions:
Is there something wrong to do that?
How can I possibly achieve this ? Is using a static variable to do this a good idea ?
 On
                        
                            
                        
                        
                            On
                            
                            
                                                    
                    
                Multi-threading will be a problem. To prevent this, if required, you'll probably need something like a mutex.
Like this:
void someFunction()
{
   static bool firstRun = true;
   if (!firstRun)
   {
      // code to execute from the second time onwards
   }
   else
   {
      firstRun = false;
   }
   // other code
}
There's two answers to this question, depending on whether you have to deal with multi-threaded serialization or not.
No threading:
With threading: I'll write the generic boilerplate, but this code is system specific (requiring some variant of an atomic compareAndSet).