지금, 나는 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, enjoy! :) – Kiril