タスクの動的範囲にある共有変数をすべて確認するのは退屈ですが、比較的簡単な作業です。依存関係ツールがポインターの逆参照 (デリファレンス) で共有問題を検出した場合、状況はさらに悪いと言えます。一般に、次のことが言えます。
ポインター式の逆参照は、同じ型のポインター式の逆参照と同じオブジェクトを参照することも、しないこともあります。
ポインター式の逆参照の実行は、実行ごとに同じオブジェクトを参照することも、しないこともあります。
アドレスが取得される変数がある場合、ポインター式の逆参照はその変数を参照することも、しないこともあります。
しかし、プログラムが動的割り当てデータ構造として実装される抽象データ型を持つ場合、共有問題に関連するそれぞれのポインター逆参照は、「これらの抽象オブジェクトへのアクセスは実装次第である」と言うことができます。抽象オブジェクトのアクセスが偶発的共有パターンであることを証明できる場合、次の手法を適用できます。
タスク内で、抽象データ型のプライベート・オブジェクトを作成します。
タスク全体でプライベート・オブジェクトを参照できるようにします。
元のオブジェクトの参照をプライベート・オブジェクトの参照に置き換えます。
タスクを終了する前にプライベート・オブジェクトを破棄します。
つまり、ポインター逆参照を無視して、実装する抽象化において問題を解決します。
「ポインターを介してアクセスされるメモリー」にポインターを介してアクセスされるメモリー位置の共有問題に関する追加情報があります。