オペレーティングシステムを使用せずに、ARMマイクロコントローラ上に小さな組み込みシステムを開発しています。いくつかの異なるタイプの割り込みが発生し(ボタンの押下、AからDへの変換、タイマーなど)、単一のスレッドが実行されます。
処理するイベントのFIFOキューが必要です。ここで、各割り込みサービスルーチンはそのイベントをキューに追加し、メイン(および唯一の)スレッドはイベントをキューから削除して処理します。割り込みサービスルーチンでキューデータ構造に明らかにアクセスすることは危険ですが、メインスレッドにロックがあり、割り込みが発生した場合、ISRはロックを永久に待機するため、スピンロックによってデッドロックが発生します。
もちろん、メインスレッドがキューをいじっている間は割り込みを無効にできることはすでに知っていますが、これは理想的ではありません。
ここに進むための最良の方法は何ですか?
ありがとうA