Om vi tar Cinebench som exempel
https://store-images.s-microsoft.com/image/apps.12423.14241737495367733.49b272ca-c8b6-458a-b04e-3fee3a31b33a.b3ba83a5-6c72-439a-ad44-69f255ee5107
Varje liten sån ruta som renderas kör en egen tråd och Cinebench delar upp testet så det blir lika många trådar som processorn klarar att köra samtidigt.
Exempelvis bilden jag hittade körs på en Ryzen 7 1800X, 8 cores 16 threads.
Då kör Cinebench 16 samtidiga trådar och varje tråd renderar en sån liten ruta.
När en ruta är färdig renderad kan den tråden dödas och en ny tråd skapas för nästa ruta.
När det är färre rutor kvar än, i detta fallet 16, så blir det färre och färre trådar.
En sak som gör att Cinebench skalar så bra med fler kärnor/trådar är att det behövs ingen eller väldigt lite synkronisering/kommunikation mellan trådar.
De kan mer eller mindre köra som om varje tråd var ett eget separat program.
Om vi tar exempelvis spel så är det mer komplicerat.
För det spelaren gör påverkar NPC och andra saker i världen och andra spelare (om det är multiplayer) och saker som händer runt omkring påverkar spelaren.
Om vi exempelvis tar ett bilspel.
Om en bil kör in i en annan bil så blir båda påverkade.
De kan inte bara köra helt oberoende som om de körde i olika parallella världar.
Såna saker gör det mer komplicerat och det kan uppstå situationer när en tråd behöver vänta på resultatet av en annan.
Så saker som spel och realtidssimuleringar skalar inte lika bra som exempelvis Cinebench.
Många server applikationer skalar också bra.
Säg att en server har många inloggade användare.
Det varje enskild användare gör kanske skalar dåligt med fler kärnor/trådar.
Men totalt sett kan servern ha många samtidiga användare och kan behandla varje användare som "ett enskilt problem".