2011-11-06 75 views
0

我似乎无法在任何地方找到明确的答案。WCF:在IOCP线程上执行的单向回调方法?

在客户端,如果我正在编写处理来自服务器的回调方法的代码,这是在IOCP线程上执行的吗?如果是的话,我希望我们应该保持回调方法的高效和快速。如果需要进行阻塞调用,那么将该回调响应排队到一个线程池是有意义的。

有人可以确认/否认我的假设。

谢谢。

回答

0

如果您在服务器中使用IO完成端口(例如,可能在需要模拟1000个客户端的服务器测试系统上),则您负责提升用户空间线程池以等待完成港口。该池可以足够大以允许许多客户端&,这样可以避免排队到另一个线程池的第二阶段。

如果使用重叠的IO完成回调,则回调由发出ReadFileEx的相同线程执行(假设您的线程正确等待可警告等待(blahEx调用),允许APC回调)。如果这个线程正在处理多个客户端,那么是的,这个线程可能会很忙,你应该将缓冲区/套接字/上下文/任何东西排到一个线程池,以便处理缓冲区并发出任何回复。

0

据我了解,是的,它是在一个IOCP。我认为,由于服务器本身处于IOCP的中间(因为它调用了回调函数),并且由于客户端处于IOCP的中间,所以最好尽快离开。

我处于同一问题的中间,我认为主要回调被用作“事件”,并且通常被卸载到UI线程或不同的工作Q.