バッファを実装しました。バッファには、読み取りと書き込みの 2 つのプロパティがあります。read 関数呼び出しは、read_slot セマフォが使用可能になるまで待機します。書き込み関数呼び出しは write_slot で待機します。write_slot セマフォは初期カウント 100 および最大カウント 100 にインストールされますが、読み取りスロットは初期カウント 0 および最大カウント 100 に初期化されます。
そこで、バッファに書き込むイベントを発生させます --> 書き込みスロットを減らします --> 読み取りスロットを増やします。イベントは非常に高速に発生することがあります。読み取り操作では、read_slot が減少し、write_slot が増加します。したがって、このアーキテクチャはデッドロックに直面することはありません。つまり、read_slot が 0 で write_slot が 0 の場合にのみデッドロックが発生するため、共通のミューテックス ロック内でスロットが増減するため、これは不可能です。
それでも私はデッドロックの状況に直面しています。イベントトリガーシステムの機能について何か考えがある人はいますか?