交通信号アプリケーションを開発するには、最小でいくつのスレッドが必要ですか? ライトのいずれかが緑色の場合、他の 3 つの方向が赤色になるため、1 つだけだと思います。また、このアプリケーションでは、複数の操作を並行して実行する必要はありません。
4 に答える
この質問は、アプリケーション全体の範囲が何であるかを知らずに意味のある答えを出すことはできません. (単純なケースでは、条件が正しければ、信号機のシミュレーションは確かに単一のスレッドで実装できます。)
ただし、信号機などの実際の制御システムは、通常、コントローラー ハードウェアとのインターフェイスに優れた C などの言語で記述されています。それはあなたの質問を無意味にします...ちょっと。
ドライバーとして、スレッドが 1 つだけであることを願っています。
必要なスレッドは 1 つだけですが、スレッドセーフでないコードやスレッドのバグの影響を想像してみてください...
誰かが文字通り死ぬ可能性があります!
編集済み
実際、「場合による」が正解です。
横断歩道などの単純な信号機は、ボタンが押されるのを待ってブロックし、サイクルを完了して再びブロック待機に戻ることができます。
多くの入力を受け取ることができる複雑なイベント ドリブン ライトは、リアルタイム入力信号を処理するための割り込みやその他のシングル スレッド メカニズムをハードウェアがサポートしていない場合、複数のスレッドが必要になる場合があります。
他の人が言ったように、これはあなたが持っている正確な条件と制約を知らなければ役に立たない演習です.
しかし、これが私のショットです。おそらく4つのスレッドがあります:
- メインスレッド -- ライフサイクルを管理します
- レシーバー スレッド -- 消防車の「リモート コントロール」などの別のハードウェア パーツや近くの信号機からの通信など、他のソースからイベントを受信して、近くの信号機が同期しているかどうかを判断します。
- ブロードキャスター スレッド -- この特定の信号機から他の消費者 (他の信号機、コマンド アンド コントロール センターなど) に信号をディスパッチします。
- 処理スレッド -- 他の 2 つのスレッド (Receiver、Broadcaster) から送受信されるイベントの処理を委任されます。
非常に些細なケースでは、はい。しかし、通常、交通信号は次のような非常に多くの要因に依存します。
- トラフィックに基づいて赤/緑になる時間
- 2 ~ 3 本の道路の交差点では、各道路の信号が同期している必要があります。
など...
したがって、これに対する決まった答えはありません。