在 Juval Lowy 的文本“Programming WCF Services”中,他写道:
...当客户端调用 Begin() 形式的方法并将 AsyncPattern 设置为 true 时,这会告诉 WCF 不要尝试直接调用服务上具有该名称的方法。相反,WCF 应该使用线程池中的线程来同步调用底层方法。同步调用将阻塞线程池中的线程,而不是调用客户端(p441)。
当每个异步方法的执行完成时,工作线程不会安静地返回池,而是调用完成回调(p447)。
我听到的是一个(工人?)线程在调用线程继续时被阻塞。这意味着如果我从客户端发出数千个这样的(长时间运行的)异步调用,我将开始扼杀我的线程池性能,因为线程池将开始产生新线程来替换所有被阻塞的线程。
但也许自从朱瓦尔写这本书以来,这个故事已经改变了?我注意到有人与 Juval 所说的相矛盾,但在一年前写的一篇完整的文章中。
这里的真实情况是什么?