现在,我正在学习C#中的多线程和使用它。所以,我面临的问题如下: (对不起,我这么简单的问题)在C#中管理线程关系#
假设我们有两个名为Producer和Consumer的类。生产者任务正在生成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;
}
}
}
和制作类的定义如下:
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
类包含缓冲变量,生产者写这个变量和消费者读从那。我结合这些类和程序我的主要方法,下面的代码:
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
类主体。
感谢您的关注。
非常感谢,这是非常有用的:) –
@Hossein,尽情享受吧! :) – Kiril