peakzhang 发表于 2007-12-28 23:31:53

关于ACE_Svc_Handler同时处理多个请求的问题

class Accept_Handler:public ACE_Svc_Handler
<ACE_SOCK_STREAM,ACE_NULL_SYNCH>
    {   
      private:
      
      Request m_request;
   ……
    };
该类作为ACE_Acceptor的处理类,问题:
1、当有多个不同的client连接过来的时候,该Handler的handle_input会被多次调用,如果handle_input中要用到m_request对象,那么这些调用用的是否是同一个对象?还是每个不同的连接使用不同的对象?
2、若是同一个客户端连接,但发起多次请求。handle_input也会被多次调用,此时的m_request是否是同一个对象?

对Acceptor的机制不熟悉,故有此问。

peakzhang 发表于 2007-12-28 23:32:00

有多少个连接过来,Server就会new 多少个Accept_Handler对象,而不管是不同Client连接过来,还是同一个客户端连接,但发起多次请求。当然啦,每一个连接均会调用一次open()函数,有数据来或者对方关断连接,将分别调用各自Accept_Handler中的handle_input虚函数。不知我这样解释你满意不。

peakzhang 发表于 2007-12-28 23:32:08

1.每个不同的连接使用不同的对象

2.不是同一个对象

peakzhang 发表于 2007-12-28 23:32:18

默认就是分配一个handler,看默认实现就知道了。

maxlcl 发表于 2008-4-10 18:20:49

请高手指点

这几个Accept_Handler对象是在同一个线程里面吗?还是创建一个Accept_Handler对象就是创建一个线程?

winston 发表于 2008-4-12 19:07:00

不能如此理解,这些对象一般用线程池调度。
页: [1]
查看完整版本: 关于ACE_Svc_Handler同时处理多个请求的问题