A process contains one or more threads. The creation of a process implies the generation of a main thread, but more threads can be created according to the needs. Each thread represents the basic unit to which the operating system assigns the processor's time. Each thread belongs to a process, and hence shares its context and is also able to access the memory space of the entire private process.
Each thread generated by a process can execute any part of its code, including parts being executed by other threads.
Each thread can be assigned to a different core or processor, always limited to the ones available for the owner process through its affinity settings.
Hence, if there are available resources for that, ...