C ++テンプレートファンションはthreadsafeですか?
-
28-09-2019 - |
質問
グーグルは何も見つかりません。それらは使用時点で作成されていますか、それともジェネリックパーツはインスタンス間で共有されていますか?
(テンプレートクラスでも同じですか?)
解決
テンプレート関数は、コンパイル時に作成されます。テンプレートのプロパティは、完全に直交しています。
他のヒント
それらは、他のどのタイプの関数よりもそれ以上のスレッドセーフではありません。
私がこれによって影響を受けているスレッドの安全性を考えることができる唯一の方法は、 someMethod<typename T>()
スレッドは安全ではなかったので、スレッドが動作するのは大丈夫でしょう someMethod<int>()
別の人が取り組んでいる間 someMethod<std:string>()
, 、スレッドセーフティの欠如が、テンプレートされていない関数への呼び出しの両方から生じなかった限り。
他の何かが1つのスレッドのみが特定のタイプで特定のタスクを一度に実行していることを保証している状況は、あまりありそうにないようです。
テンプレート関数は、単に「通常」関数を生成するためにコンパイラが使用するテンプレートです。したがって、それは通常の関数と同じです、違いはありません。
所属していません StackOverflow