2

谷歌搜索没有找到任何东西。它们是在使用点创建的,还是在实例之间共享通用部分?

(模板类也一样?)

4

4 回答 4

11

模板函数是在编译时创建的。模板属性与线程安全完全正交。

于 2010-10-07T22:06:02.283 回答
6

与任何其他类型的函数相比,它们并不多或少是线程安全的。

于 2010-10-07T22:06:54.107 回答
3

我能想到线程安全受此影响的唯一方法是,如果不是线程安全的,那么一个线程在另一个线程工作时someMethod<typename T>()仍然可以运行,只要缺乏线程安全性没有来自他们都调用了一些非模板化的函数。someMethod<int>()someMethod<std:string>()

不过,其他东西保证一次只有一个线程执行具有特定类型的特定任务的情况似乎不太可能。

于 2010-10-07T22:13:17.000 回答
2

模板函数只是......编译器用来生成“正常”函数的模板。所以和普通功能一样,没有区别。

于 2010-10-07T22:06:16.417 回答