Являются ли функции шаблонов C ++ безопасными для потоков? - PullRequest
2 голосов
/ 08 октября 2010

Гугл ничего не находит.Они создаются в точке использования или общие части совместно используются экземплярами?

(то же самое для шаблонных классов?)

Ответы [ 4 ]

11 голосов
/ 08 октября 2010

Шаблонные функции создаются во время компиляции. Свойство шаблона полностью ортогонально потокобезопасности.

6 голосов
/ 08 октября 2010

Они не более или менее поточно-ориентированы, чем любой другой тип функции.

3 голосов
/ 08 октября 2010

Единственный способ, которым я могу думать о том, что это влияет на безопасность потоков, заключается в том, что если someMethod<typename T>() не является потокобезопасным, тогда все равно будет нормально работать с потоком на someMethod<int>(), а другой работал на someMethod<std:string>() до тех пор, пока отсутствие безопасности потоков не возникло из-за того, что они оба вызывали какую-то не шаблонную функцию.

Ситуация, когда что-то еще гарантирует, что только один поток выполняет определенную задачу с определенным типом одновременно, кажется довольно маловероятной.

2 голосов
/ 08 октября 2010

Шаблонные функции - это просто ... шаблоны, используемые компилятором для генерации "обычных" функций.Так что это так же, как обычные функции, нет никакой разницы.

...