現在、マルチスレッドと C# での使用法を学んでいます。だから、私は以下のような問題に直面しています:(私のとても単純な質問で申し訳ありません)
Producer と Consumer という名前の 2 つのクラスがあるとします。プロデューサ タスクはプログラムの実行中に 4 つの数値を生成し、コンシューマ タスクはそれらの数値を消費して使用し、プログラムの最後にそれらの合計を返します。
消費者クラスの定義:
class Consumer
{
private HoldInteger sharedLocation;
private Random randomSleepTime;
public Consumer(HoldInteger shared, Random random)
{
sharedLocation = shared;
randomSleepTime = random;
}
public void Consume()
{
int sum = 0;
for (int i = 1; i <= 4; i++)
{
Thread.Sleep(randomSleepTime.Next(1, 3000));
sum += sharedLocation.Buffer;
}
}
}
また、Producer クラスの定義は次のとおりです。
class Producer
{
private HoldInteger sharedLocation;
private Random randomSleepTime;
public Producer(HoldInteger shared, Random random)
{
sharedLocation = shared;
randomSleepTime = random;
}
public void Produce()
{
for (int i = 1; i <= 4; i++)
{
Thread.Sleep(randomSleepTime.Next(1, 3000));
sharedLocation.Buffer = i;
}
}
}
また、HoldInteger
プロデューサーがこの変数を書き込み、コンシューマーがそこから読み取る Buffer 変数を含むクラスがあります。これらのクラスを組み合わせて、メイン メソッドで以下のコードをプログラムします。
static void Main(string[] args)
{
HoldInteger holdInteger = new HoldInteger();
Random random = new Random();
Producer producer = new Producer(holdInteger, random);
Consumer consumer = new Consumer(holdInteger, random);
Thread producerThread = new Thread(new ThreadStart(producer.Produce));
producerThread.Name = "producer";
Thread consumerThread = new Thread(new ThreadStart(consumer.Consume));
consumerThread.Name = "consumer";
producerThread.Start();
consumerThread.Start();
}
それで、私の質問はそれですHow can i manage this relationship With Low Memory and Time Wasting ?
HoldInteger
これらのスレッド管理コードはクラス本体に配置されることに注意してください。
ご清聴ありがとうございました。