13

タイトル通り。std::atomic<>シグナル ハンドラで使用できますか? またはsig_atomic_t他のコンパイラ機能を提供しますか?

4

1 に答える 1

16

n3376 1.9/6

抽象マシンの処理がシグナルの受信によって中断されると、どちらでもないオブジェクトの値

— タイプ volatile std::sig_atomic_t nor

— ロックフリーのアトミックオブジェクト (29.4)

これら 2 つのカテゴリのいずれにも属さず、ハンドラーによって変更されたオブジェクトの値は未定義になります。

ロックフリー 29.4/1,2

ATOMIC_..._LOCK_FREE マクロは、対応するアトミック型のロックフリー プロパティを示し、符号付きバリアントと符号なしバリアントがグループ化されます。プロパティは、atomic テンプレートの対応する (部分的な) 特殊化にも適用されます。値 0 は、型が決してロックフリーでないことを示します。値 1 は、型がロックフリーである場合があることを示します。値 2 は、型が常にロックフリーであることを示します。

関数atomic_is_lock_free (29.6) は、オブジェクトがロックフリーかどうかを示します。任意のプログラム実行において、ロックフリー クエリの結果は、同じ型のすべてのポインタに対して一貫性があります。

于 2013-04-11T12:44:54.883 に答える