Multithreading-Version von Libraries
-
Es gibt für Libraries ja immer eine extra Version für Multithreading-Anwendungen, bzw. die Option, sie zu bauen. Was ist der Grund dafür? Was ist in diesen Versionen dann zu den Singlethreaded-Varianten anders?
-
singlethreader schrieb:
Es gibt für Libraries ja immer eine extra Version für Multithreading-Anwendungen, bzw. die Option, sie zu bauen. Was ist der Grund dafür? Was ist in diesen Versionen dann zu den Singlethreaded-Varianten anders?
mutexe um globale daten oder atomare operationen.
sonst zerbröselt zum beispiel der freispeicher, wenn zwei threads new aufrufen und der eine sagt int c=count+1;foo(c);count=c; und wärend foo läuft, kommt ein anderer und macht auch die drei schritte und dann macht erst der erst weiter und count wurde nur um eins erhöht statt um zwei, obwohl die sequent zweimal durchlaufen wurde.
das ganze schützen macht den code ein wenig langsamer. deswegen gibts manchmal single-threaded-libs, die man einsetzen kann, wenn man sicher nur einen thread benutzen will.
-
Danke!
