I'm having trouble understanding thread creation in my C++ app. I am writing an app that has a main thread that will launch a processing thread and 24 send threads that will be sending data via MPI calls to other processes in the system. My send and process threads are both methods of a C++ class and are declared static. My understanding is that static members get created in memory at runtime before main is called but since I actually create 24 of the send threads how is that handled as far as memory allocation goes? Does each thread have its own copy of the method or is there simply a separate stack for each thread and they share the one static instance of the method in memory? I do have data that is shared by the threads guarded with mutexes.