updates the variable
as well as the initialized memory locations. The function
will never be called before the initialization happens; and the initialization will only happen once, regardless of which task calls
first, as long as two tasks do not try to execute the
statement at the same time. If two tasks do try to execute the
statement at the same time, they could both see that
is false and both try to do the initialization.