Mehrere Threads vs. mehrere Kerne

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Mehrere Threads vs. mehrere Kerne

Beitrag von ts-soft »

Oder werden Linked List automatisch geschützt?
Nein, sind immer mit Mutex (oder ähnlichem) abzusichern! Unter Windows ist ein Mutex kein Mutex sondern eine Critical Section,
naja, entnimmt man nicht der Hilfe sondern muß in den Foren immer alles mitlesen /:->
Quelle: http://purebasic.fr/english/viewtopic.p ... c9#p496495
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Mehrere Threads vs. mehrere Kerne

Beitrag von NicTheQuick »

Threads werden ständig zwischen verschiedenen Prozessorkernen hin und her geschoben. Eben um die Hitzeentwicklung auf dem CPU-Die gleichmäßiger zu verteilen. Wäre ja blöd, wenn dir deine CPU platzt, weil ein Viertel davon überhitzt und die anderen drei Viertel im Vergleich dazu kühl sind.
Zu erklären wie ein einfacher Taskscheduler funktioniert, ist schon kompliziert genug. Das lernt man unter anderem in Systemarchitektur an der Uni. Tatsächlich steckt dahinter natürlich noch viel mehr bei heutigen Betriebssystem. Aber ein schönes Beispiel wäre noch der neue AMD Ryzen, der im Singlethread-Modus praktisch langsamer ist als ein vergleichbarer i7. Das liegt daran, Ryzen aus zwei CPU-Kern-Clustern besteht. Da Windows einen einzelnen Thread ständig auf alle Kerne verteilt, kommt es zu Mikropausen, wenn der Thread die Cluster wechselt. Das rührt daher, dass jeder Cluster einen eignen L3-Cache hat und Daten dann von einem zum anderen Cluster geschoben werden müssen, wenn der Thread dazwischen wechselt. AMD hat bei seiner Präsentation zu Ryzen natürlich etwas geschummelt und den SingleThread-Test so optimiert, dass er nicht zwischen den Clustern wechselt. Aber bevor man sowas selbst in die Hand nimmt, sollte man warten bis Microsoft da ein Update bringt, damit die Leistung bei sowas nicht einbricht.
Bild
Antworten