A 
thread of execution (also known as a 
thread) is a single flow of
control within a program, including the initial invocation of a specific
top-level function, and recursively including every function invocation
subsequently executed by the thread
.  [
Note 1: 
When one thread creates another,
the initial call to the top-level function of the new thread is executed by the
new thread, not by the creating thread
. — 
end note]
  
Every thread in a program can
potentially access every object and function in a program
.  
Under a hosted
implementation, a C++ program can have more than one thread running
concurrently
.  The execution of each thread proceeds as defined by the remainder
of this document
.  The execution of the entire program consists of an execution
of all of its threads
.  [
Note 2: 
Usually the execution can be viewed as an
interleaving of all its threads
.  However, some kinds of atomic operations, for
example, allow executions inconsistent with a simple interleaving, as described
below
. — 
end note]
  Under a freestanding implementation, it is 
implementation-defined whether a program can
have more than one thread of execution
.