Das "sämtliche Programme und Spiele mehrere Kerne nutzen" wird aber nicht passieren! (Zumindest nicht in den nächsten 10-20 Jahren)
Wer sich ein wenig mit Softwareentwicklung auskennt, Multithreaded-Anwendungen sind im allgemeinen extrem kompliziert, da schleichen sich sehr schnell diverse Fehler ein und das Problem: Man kann durch testen im Allgemeinen nicht alle Fehler finden! Ob und wenn ja welcher Fehler auftritt hängt von allem Möglichen ab, auch Hardware und sonstiger Software.
Da gibts so "lustige" Sachen wie Deadlocks (Programm bleibt einfach stehen), Lifelocks (dasselbe, nur das weiter CPU-Power verbraten wird) und völlig undefiniertes Systemverhalten.
Außerdem ist es bei vielen Programmen einfach nicht sinnvoll möglich Multithreaded zu programmieren, denn muss man zuviel Synchroisieren frisst das den performancevorteil eventuell wieder vollkommen auf oder das Programm läuft sogar noch langsamer, auf einem Singlecore wird es durch die Synchronisation sowieso langsamer laufen!
"Leicht" machbar und sinnvoll ist Multicore-Support bei Sachen wie Raytracing, Audio-/Video-Berarbeitung, Packprogramme (je nach Format) usw.
Bei Spielen wirds schon schwierig, da muss das Spiel auf jeden Fall von Grund auf für Multicore-Support ausgelegt sein, wenn man bedenkt das bei der Spieleentwicklung viele bestehende Grundlagen wiederverwendet werden (siehe die ganzen Engines) wird das noch dauern... Trotzdem muss man sich überlegen was man überhaupt in Threads unterteilen kann, bei mehreren KI-Gegnern die nicht direkt zusammenarbeiten könnte man diese wohl in Threads unterteilen, Physik ist schon nicht mehr so einfach (es sei denn es geht nur um Animationen die im Prinzip keinen Einfluss auf das Spiel haben)
Nicht falsch verstehen: Ich wünsche mir auch das es mehr Multicore-Support gibt, aber eie gesagt:
Es gibt gute Gründe dafür das es nicht mehr Multicore-Support gibt und mal ehrlich:
Programme haben jetzt schon genug Bugs, wo soll das hinführen wenn jetzt noch neue Bugs hinzukommen die weder im Vorfeld durch Tests entdeckt werden können noch reproduzierbar (und damit kaum zu beheben) sind? Und selbst wenn die Fehler reproduzierbar sind ist es oft ein enormer Zeitaufwand herauszufinden wieso dieser Fehler auftaucht und wenn man das weiß heißt es noch lange nicht das man den Fehler überhaupt beheben kann ohne weite teile des Programm komplett neu zu schreiben!
Gruß
Nova