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 use 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
.