0
情况:用于去耦的异步处理天青Web角色 - Monitor.Wait和线程starvation
- 接收请求
- 地方请求有效载荷到一个队列:一个高规模天青IIS7应用程序,它必须执行此
- 保持连接到客户端
- 等待异步过程已完成
- 响应客户端的通知
请注意,这些将是长时间运行的过程(30秒到5分钟)。
如果我们在这里使用Monitor.Wait(...),等待从异步进程到同一个Web应用程序的回调,以调用Monitor.Pa ...()对我们调用Monitor.Wait (),这是否会在短时间内有效地创建线程匮乏?
如果是这样,该如何缓解?在这里等待回调是否有更好的模式?例如,我们可以将Response对象放在线程安全的字典中,然后以某种方式让步,让回调代码锁定Response并继续响应客户端?如果是这样,怎么样?
另外,如果异步进程死亡并且从不调用回调,从而不会导致Monitor.Pulse()触发?我们的线程现在挂了吗?
为什么你不看AsyncPage/AsyncController呢? – astaykov
谢谢。根据你的建议,我们考虑了这一点,这绝对是一条路。我们的新挑战是Azure主题上的100个并发连接限制,所以我们只需要启动更多主题。你能做出这个答案吗?如果你这样做,我会检查这个盒子。 –