Traditionally, we think of the flow of execution through a program as being in one place at a time, flowing from one statement to the next. But it is possible for a C++ program to have multiple "threads" of execution. Each thread would act like a traditional flow of execution. Having multiple threads causes the computation of different parts of your software at essentially the same time. Each thread maintains its own local state for things like its stack of function calls.