Multithreading, volatile, Cache usw.
-
otze schrieb:
jenz schrieb:
naja, habe noch ein bisschen gelesen, scheint auf lauftzeiten und "verdrahtung" hinauszulaufen, warum man die L1 caches trennt.
Ach!
haste vorher gewusst, was?
-
self quote 4tw:
knivil schrieb:
Klar wird der Cache immer dicker, wenn er mehr Leitungen hat, aber das ist doch kein prinzipielles Problem.
Doch!
-
Da es hier vorhin um langsame Mutex ging:
Ein Mutex ist also langsam weil die Chaches meherer CPUs synchronisiert werden müssen.Ich habe folgenden Fall: Ich habe eine Datenstruktur, die EVENTUELL mal von mehreren Threads bearbeitet wird. Zur Zeit aber nur einer. Da ich die passende Infrastruktur möchte, wurde alles mit Locks ausgestattet.
Bremsen die Locks jetzt den Thread auch so stark aus, wenn er eigentlich allein auf den Daten operiert?
-
Ethon schrieb:
Ein Mutex ist also langsam weil die Chaches meherer CPUs synchronisiert werden müssen.
Ja, wobei es bei vielen CPUs nicht der Abgleich der "Nutzdaten" ist der bremst, sondern der CAS Befehl (Compare-and-Swap aka. InterlockedCompareExchange) der zum "Locken" der Mutex nötig ist.
Ich habe folgenden Fall: Ich habe eine Datenstruktur, die EVENTUELL mal von mehreren Threads bearbeitet wird. Zur Zeit aber nur einer. Da ich die passende Infrastruktur möchte, wurde alles mit Locks ausgestattet.
Bremsen die Locks jetzt den Thread auch so stark aus, wenn er eigentlich allein auf den Daten operiert?Es bremst auch wenn nur ein Thread zugreift. Mit einigen (allen?) CPUs bremst es aber weniger schlimm, als wenn wirklich zwei Threads abwechselnd zugreifen.