Теперь я изучаю многопоточность и ее использование в C #. Итак, я столкнулся с проблемой, как показано ниже:
(Извините за мой простой вопрос)
Предположим, что у нас есть два класса с именами Producer и Consumer. Задача Producer производит 4 числа во время выполнения программы, а задача Consumer использует и использует эти числа и возвращает их сумму в конце программы.
Определение потребительского класса:
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
класс, содержащий переменную 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
тело класса.
Спасибо за внимание.