Hallo Henry,
entweder das, oder running/sleeping hat in dem Tool eine andere Bedeutung.
In einem Multitasking-System hat ein Thread mehr Status als Run/Sleep.
Sleep heißt: Der Thread kann nicht laufen, weil er auf ein externes Signal wartet (z.B. Festplatten-IO, oder eine Message von einem Socket, einer Named Pipe, oder ein irgendwie geartetes anderes Event).
Running heißt: Er führt aktiv CPU-Instruktionen aus.
Wenn TOP den Status der laufenden Threads bestimmt, dann ist er selbst im Status Running. Bei 4 Kernen können also nur 3 andere Threads auf "Running" stehen, bei 2 Kernen nur ein einziger anderer.
Es gibt aber auch noch "Ready". Das sind die Threads, die gerne was tun würden, aber nicht können, weil der Scheduler meint, andere Threads wären gerade wichtiger. Und "Ready" können deutlich mehr Threads sein, als es Cores gibt. Das könnte man evaluieren, indem man ein Testprogram schreibt, das zehn Sekunden damit verbringt, vor sich hin zu loopen. Und das startet man vier oder acht mal.
Rolf
sumpsi - posui - obstruxi