3

私が書いているプログラムには 3 つの関数があります。簡単にするために、それらを A、B、C と呼びましょう。各関数が機能するには、リソース X にアクセスする必要があります。

制限として、A と B を同時に実行することは許可されておらず、適切に同期する必要があります。ただし、C は A または B と同時に実行できます。

これは私にいくつかの問題を引き起こしています。

最初に、A と B にロックを設定しようとしたので、A が呼び出されると、X へのロックを取得し、B と同じように解放します。このようにして、A と B は順次実行されます。ただし、この方法でロックを使用すると、C は A または B と同時に実行できなくなります。

そこで、B が実行されている場合に A が B からのシグナルを待つ必要があり、B が A からのシグナルを待つ必要がある条件変数を使用してみましたが、この種の相互依存呼び出しも機能しないようでした。

何をすべきかわからない。

4

1 に答える 1