상황 스레드 : 높은 규모의 푸른 IIS7 응용 프로그램을하는이 작업을 수행해야합니다 :푸른 웹 역할 - Monitor.Wait 및 기아에게
- 수신 요청
- 장소 요청 페이로드를 큐에 분리 할 비동기 처리 에 대한
- 는 비동기 프로세스가 클라이언트에
- 에 응답을 완료 알림에 대한
- 대기 클라이언트 연결을 유지
이들은 장기 실행 프로세스 (30 초에서 5 분)입니다.
우리가 여기서 호출 한 객체에서 Monitor.Pulse (...)를 호출하기 위해 비동기 프로세스에서 동일한 웹 응용 프로그램에 대한 콜백을 기다리는 중 Monitor.Wait (...)을 사용하는 경우 여기에 Monitor.Wait() on,이 효과적으로 쓰레드 기아를 서둘러 만들 것인가?
만약 그렇다면 어떻게 완화시킬 수 있습니까? 콜백을 기다리는 데 더 좋은 패턴이 있습니까? 예를 들어 Response 개체를 스레드로부터 안전한 사전에 배치 한 다음 어떻게 든 반환하고 콜백 코드가 응답을 잠그고 클라이언트에 응답하도록 할 수 있습니까? 그렇다면 어떻게?
또한 비동기 프로세스가 종료되고 콜백을 호출하지 않으면 Monitor.Pulse()가 실행되지 않습니다. 우리의 실이 지금 달렸어?
왜 AsyncPage/AsyncController를 보지 않습니까? – astaykov
고맙습니다. 당신의 제안에 따라, 우리는 이것을 보았습니다. 그리고 그것은 확실히가는 길입니다. 우리의 새로운 도전 과제는 Azure Topic의 동시 연결 수를 100으로 제한하는 것이므로 더 많은 토픽을 만들어야합니다. 이 대답을 할 수 있니? 네가 그렇게한다면 상자를 체크 할 것이다. –