Sind C ++ Template-Funktionen Thread-sicher?
-
28-09-2019 - |
Frage
Googeln finden nichts. Sind sie am Verwendungsort erstellt, oder sind die allgemeinen Teile geteilt zwischen Instanzen?
(Das Gleiche gilt für Template-Klassen?)
Lösung
Template-Funktionen werden bei der Kompilierung erstellt. Die Vorlage Eigenschaft ist vollständig orthogonal-Sicherheitsfaden.
Andere Tipps
Sie sind nicht mehr oder weniger Thread-sicher als jede andere Art von Funktion.
Der einzige Weg, ich Thread-Sicherheit denken kann davon betroffen wird, ist, dass, wenn someMethod<typename T>()
nicht Thread-sicher war, dann wäre es noch in Ordnung zu sein für ein Thread auf someMethod<int>()
zu arbeiten, während ein anderer auf someMethod<std:string>()
gearbeitet, solange der Mangel an Thread-Sicherheit kam nicht von ihrem beide Aufruf in eine nicht-Templat-Funktion.
Die Situation, in etwas anderes ist garantiert, dass nur ein Thread zu einem Zeitpunkt, um eine bestimmte Aufgabe mit einer bestimmten Art tut scheint ziemlich unwahrscheinlich, aber.
Template-Funktionen sind einfach ... Vorlagen vom Compiler verwendet „normale“ Funktionen zu erzeugen. So ist es das gleiche wie normale Funktionen ist, gibt es keinen Unterschied.