once_flag私は、この動作によって引き起こされるバグに遭遇しましたそれは次のようになりパット:呼び出し可能な関数がハングします::
01:#include <mutex> std::once_flag onceFlag; int main(int argc, char* argv[]) { std::call_once(onceFlag, [](){ std::call_once(onceFlag, [](){} ); } ); return 0; }
を私はcppreferenceでここに読んだものによると、(http://en.cppreference.com/w/cpp/thread/call_once)は、この先はstd最初の呼び出しとして、期待されるように::なcall_onceが実行を終了していないです
上記の の実行が正常に完了する前に、グループ内の呼び出しが返されません。つまり、 は例外によって終了しません。
なぜ上記の要件ですか?関数が呼び出される前にonce_flagを設定することはできませんでした。例外がスローされた場合はリセットされましたか?
短い答え:委員会がそうすべきだと決めたので。 – Caleth