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>()両方がテンプレート化されていない関数を呼び出すことから発生します。

ただし、他の何かが、一度に1つのスレッドだけが特定のタイプで特定のタスクを実行していることを保証している状況は、ほとんどありそうにありません。

于 2010-10-07T22:13:17.000 に答える
2

テンプレート関数は、コンパイラが「通常の」関数を生成するために使用する単純なテンプレートです。したがって、通常の機能と同じで、違いはありません。

于 2010-10-07T22:06:16.417 に答える