このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ロックされたミューテックスの破棄
タスクによるロックされた状態のミューテックスの破棄の試み
説明
このチェッカーは、既定の Polyspace® as You Code 解析では非アクティブにされます。Polyspace as You Code 解析で非アクティブにされるチェッカー (Polyspace Access)を参照してください。
この欠陥は、ミューテックスがロックされた後 (そのロックが解除される前に) タスクがミューテックスを破棄した場合に発生します。このロックと破棄は、同じタスクで行われることも、異なるタスクで行われることもあります。
リスク
ミューテックスは、共有変数を同時アクセスから保護するためにロックされます。ミューテックスがロックされた状態で破棄される場合、この保護が適用されません。
修正方法
この欠陥を修正するには、ミューテックスのロックを解除した後のみ破棄します。適切な設計は、以下のとおりです。
ミューテックスを使用するスレッドを作成する "前" にミューテックスを初期化します。
作成したスレッドに加わった "後" にミューテックスを破棄します。
[結果の詳細] ペインに、ミューテックスのロックと破棄の 2 つのイベントと、そのイベントを開始したタスクが表示されます。ソース コード内の対応する行に移動するには、そのイベントをクリックします。
例
結果情報
グループ: 同時実行 |
言語: C | C++ |
既定値: オフ |
コマンド ライン構文: DESTROY_LOCKED |
影響度: Medium |
バージョン履歴
R2016b で導入