Ein Thread ist in Bezug auf die Prozessverwaltung eine "atomare" Einheit. Daher können Sie keinen Thread auf mehreren Kernen ausführen, da mehr als ein Kern gleichzeitig an dem Thread arbeitet .
Natürlich kann ein Programm (Prozess) zwei oder mehr Threads umfassen, die genau dasselbe tun, oder sogar einen Thread einschließlich aller aktuellen Zustände und Speicher duplizieren und die Kopie als eigenen neuen Thread ausführen. Mehrere Threads (unabhängig davon, ob sie genau dasselbe tun oder nicht, auf identische Speicherinhalte zugreifen und denselben Status haben) können (wenn möglich) auf verschiedenen Kernen laufen.
Dies ist nicht mit der Verlagerung von Threads zu verwechseln . Das O / S kann aus bestimmten Gründen (z. B. Energiemanagement) jederzeit einen bestimmten Thread aus dem Kern heraus verschieben, von dem aus es derzeit zu einem anderen Kern läuft. In diesem Sinne verwendet ein Thread wahrscheinlich mehrere Kerne, jedoch verwendet er nicht mehr als einen Kern zur gleichen Zeit . Stattdessen "springt" es von einem Kern zum anderen, wobei zu einem bestimmten Zeitpunkt ein Kern verwendet wird.
(Um es einfach zu halten, habe ich Hyperthreading in der obigen Erklärung nicht von echten Kernen unterschieden; ich denke, das ist in diesem Zusammenhang in Ordnung.)