동일한 MQ 백 엔드와 통신해야하는 여러 스레드 (IIS에서 실행중인 C# 응용 프로그램)가 실행 중입니다. 네트워크 트래픽을 최소화하려면 수행해야 할 작업이있을 때만 백엔드 요청을 보내야합니다. 수행 할 작업이 있는지 모니터링 할 하나의 스레드가 있으며 처리를 시작해야한다는 것을 다른 스레드에 알릴 필요가 있습니다.수행 할 작업이있을 때 스레드 일시 중지 및 알림
CheckIfWorkAvailable() {
while(true) {
if (queue.Empty != true) {
workToBeDone = true;
}
}//end while loop
}
다음 작업자 스레드 :
DoWork() {
while(true) {
if (workToBeDone == true) {
//do work...
}
else {
Thread.Sleep(x seconds)
}
}//end while loop
}
수있는 현재의 솔루션은 모니터 스레드에서, 즉 모니터 스레드 전역 변수를 설정하고 다른 스레드 루프를 갖는 것을 확인을 포함한다 모니터 스레드는 작업자 스레드에게 루프 및 슬립 대신 작업을 알립니다. 작업자 스레드는 작업 중임을 나타내는 카운터를 설정하고 작업이 완료되면 작업 수를 감소시켜 workToBeDone 플래그를 false로 설정할 수 있습니다.
나는 똑같은 말을하려고했다. 비슷한 코드에 대해 AutoResetEvent를 사용했습니다. –