を使用してのコードのセットの1時間実行のためのC++でのより良い方法はありますC++ 11。 1つのタイムコードをC++ 11のlambdaやstd :: onceの機能やその他のものに置き換えるより良い方法はありますか?ではなく、私は1時間の初期化のためのコードを持っている多くの場所では、静的変数のチェック
答えて
はい - std::call_once
、これを使用する方法についてのドキュメントを参照してください。http://en.cppreference.com/w/cpp/thread/call_once
std :: call_onceの使用静的変数std :: once_flagの代わりに、同様の実装があります。 std :: once_flagフラグ; void testMethod2() { std :: cout << __PRETTY_FUNCTION__ << std :: endl; } int main() { std :: call_once(flag、testMethod2); std :: call_once(flag、testMethod2); return 0; } – rameshrgtvl
はい - あなたのアプローチとは異なり - スレッドセーフです... – Nim
あなたは、静的な関数呼び出しにあなたの行動をカプセル化またはC++ 11のラムダで直後に呼び出された関数式のようなものを使用することができます。
int action() { /*...*/ }
...
static int temp = action();
それぞれ
static auto temp = [](){ /*...*/ }();
。
はい、最も一般的な解決策はstd::call_once
を使用することですが、時には少し余計になります(特別なフラグを使用して最初の質問に戻ってください)。
C++ 11標準では、これらのアプローチはすべてスレッドセーフです(変数は一度「原子的に」初期化されます)。ただし、共有リソースがここで使用されている場合は、action
内のレースを回避する必要があります。
- 1. は、私は私のアプリの私の初期化で、次のコード(1回目)持っているNSUserDefaultsフィールド
- 2. Django - 静的オブジェクトを初期化する場所は?
- 3. テンプレートクラスの静的変数の初期化
- 4. 私はScalaのコードに多くの場所で見てきたスカラ
- 5. 2つの初期化されていない静的変数間の差異
- 6. のSQLite PythonのINSERT、私は多くの列を持つテーブルを持っている多くの変数
- 7. は私がテーブルの多数の行をロックするいくつかの場所を持っているテーブルに
- 8. C99の静的変数を持つ初期静的変数
- 9. PHP静的変数はどれくらいの期間持続しますか?
- 10. なぜ私はいくつかのlispの初期化コード持っているパッケージ
- 11. 日時は、私は私のコードに1時間を追加するために持っている
- 12. 私は多くのボタンでWPFウィンドウを持っている多くのボタン
- 13. 場所は私は私のウェブサイトでは、いくつかの動的な場所を表示したい
- 14. は、私はそうのようないくつかのコードを持っているPHPのHeader->場所
- 15. 静的変数の初期化java
- 16. PHP静的変数の初期化
- 17. 非静的変数の初期化
- 18. 私はプロジェクト内の多くの場所でdropzone.jsを使用しましたが、私は1つの場所でファイルの数を制限したいです
- 19. は、ユニットにunique_ptrを初期化し、私は次のコードを持っている
- 20. は、私はあなたがいつものようにObjective-Cのオブジェクトを初期化する必要がある多くの場所で読んだのinit
- 21. 静的イニシャライザがJavaで静的変数の再初期化を許可するのはなぜですか?
- 22. 報告されていない例外は、私はこのコードを持ってキャッチまたは静的初期化子で
- 23. 静的変数は特定のスレッドで初期化されていますか?
- 24. アンドロイド:私は静的変数を含むクラスを持っている場合は、静的変数と
- 25. python3で静的変数を初期化する方法は?
- 26. マルチスレッドコンテキストで静的変数を初期化する方法は?
- 27. は、私は状況の異なる種類\ ESを持っている..私は初期化 からの私のDataGridViewの背景色を変更するにはそれが全く変わっていない問題を抱えている初期化
- 28. 多くは、私はこのコードを持っている一つの形
- 29. 多くのHTTPリクエストは、私は次のコードを持っているボトルサーバ障害
- 30. 速記のための私はこれに似て/もしelse文の多くのいくつかのコードを持っている場合は、else文
http://stackoverflow.com/questions/4173384/how-to-make-sure-a-function-is-only-called-once私は第二の答えも良いと思います。 – Yves