0

マルチコア CPU をシミュレートするプログラムを作成しようとしています。

コアの仕事をする 3 つのスレッドがあります。

FIFO (先入れ先出し) の順序で実行されるタスクもいくつかあります。私はJavaのスレッドの概念に慣れていないので、これについて多くのことを考えた後でも、プログラムの書き方についてはまだわかりません。

これを最も簡単な方法で行う方法と、どのメソッドとクラスを使用する必要があるかを知りたいだけです。

wait()、の使用を考えてnotifyAll()いますが、これが機能するかどうかはわかりません。

このプログラムでは、すべてのステップで、メイン メソッドがマスター クロックを出力してインクリメントし、スレッドはそれぞれ、マスター クロックの現在の値に従って、何かを出力する必要があるかどうか (新しいタスクの開始、コンテキスト スイッチ) を決定します。 . ヒントをいただければ幸いです。

出力は次のようになります。

Task 2 : 6 time units
Task 3 : 9 time units
Task 4 : 10 time units
Task 5 : 10 time units
Task 6 : 8 time units
Task 7 : 7 time units

--------------------

Master Clock : 0
  Core 2 started its first task of 7 time units
  Core 0 started its first task of 9 time units
  Core 1 started its first task of 6 time units
Master Clock : 1
Master Clock : 2
Master Clock : 3
Master Clock : 4
Master Clock : 5
Master Clock : 6
  Core 1 started context switch
Master Clock : 7
  Core 2 started context switch
Master Clock : 8
  Core 1 started a new task of 9 time units
Master Clock : 9
  Core 2 started a new task of 10 time units
  Core 0 started context switch
Master Clock : 10
Master Clock : 11
  Core 0 started a new task of 10 time units
Master Clock : 12
Master Clock : 13
Master Clock : 14
Master Clock : 15
Master Clock : 16
Master Clock : 17
  Core 1 started context switch
Master Clock : 18
Master Clock : 19
  Core 1 started a new task of 8 time units
  Core 2 started context switch
Master Clock : 20
Master Clock : 21
  Core 0 completed a total of 2 tasks
  Core 2 started a new task of 7 time units
Master Clock : 22
Master Clock : 23
Master Clock : 24
Master Clock : 25
Master Clock : 26
Master Clock : 27
  Core 1 completed a total of 3 tasks
Master Clock : 28
  Core 2 completed a total of 3 tasks
4

2 に答える 2

2

あなたの説明から、このシミュレーションにはJavaスレッドは必要ない(または必要ないはずです)ようです。仮想コアは、マスタークロックに基づいてロックステップで実行されています。必要なのは、マスタークロックを表すメインループと、各仮想コアの操作キューだけです。各マスタークロックステップで、各仮想コアのアクションを決定して実行します。実際のスレッドは必要ありません。

于 2012-12-20T09:10:43.180 に答える
0

Java の並行性についてもっと学ぶべきです。これはスレッド プールと作業キューに関する記事で、Java で何ができるかを理解するのに役立ちます - http://www.ibm.com/developerworks/library/j-jtp0730/index.html

于 2012-12-19T19:38:41.350 に答える