このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
非同期にキャンセル可能なスレッド
呼び出し元スレッドが安全ではない状態でキャンセルされる可能性がある
説明
この欠陥は、pthread_setcanceltype
を引数 PTHREAD_CANCEL_ASYNCHRONOUS
と一緒に使用して、呼び出し元スレッドのキャンセル可能性タイプを非同期 (または即時) に設定した場合に発生します。非同期でキャンセル可能なスレッドは、いつでも、通常は、キャンセル要求の受信直後にキャンセルできます。
リスク
呼び出し元スレッドが、リソース リーク、デッドロック、データ レース、データ破損、または予測できない動作につながる安全ではない状態でキャンセルされる可能性があります。
修正方法
引数 PTHREAD_CANCEL_ASYNCHRONOUS
を指定した pthread_setcanceltype
の呼び出しを削除して、代わりに、既定のキャンセル可能性タイプ PTHREAD_CANCEL_DEFERRED
を使用します。既定のキャンセル可能性タイプを使用して、スレッドは、キャンセル ポイントである関数を呼び出すまでキャンセル要求を延期します。
例
結果情報
グループ: 同時実行 |
言語: C | C++ |
既定値: オフ |
コマンド ライン構文: ASYNCHRONOUSLY_CANCELLABLE_THREAD |
影響度: Medium |
バージョン履歴
R2020a で導入