0

コードが機能する方法を設計するのにいくつかの困難があります。

  1. シリアル #1 (いつでもデータを受信) は、特定の受信値Aが > constant1である場合にRoutine()を呼び出しますが、Routine() が実行されていない場合のみ、それ以外の場合はRoutine()の終了後に最後の呼び出しのみが実行されます。
  2. シリアル#2(随時データ受信)は受信データをBCにセット
  3. Routine()はC > constant2かどうかをチェックし、 BCをファイルに保存します
  4. タイマー (N 秒ごと) は、保存されたファイルをチェックして電子メールを送信する別のルーチンを実行します ( BおよびCの保存中にRoutine()に干渉することはありません) 。

私の現在の設計では、いくつかのグローバル ブール値を使用していますが、いくつかの問題が発生していると思います (ブール値がチェックと再設定の間で変化し、「ロックされた」手順を開始するため)。

では、このような同期の問題を解決するための推奨される方法は何ですか? ロック(someGlobalObject)?、モニターを使用? (複数の保留中の routine() 呼び出しを破棄する方法は?)、Mutex?、Semaphore?

ありがとう!

4

1 に答える 1