getq 返回-1. 队列空的,怎么不阻塞啊.
反应式的connector.在open里activate().
在handle_input中putq.
在svc()里头:
while(1)
{
ACE_Message_Block* mblk = 0;
if( getq() == -1 )
{
return -1;
}
else
//其它处理.
}
连接上时在svc处理完else下面的处理后再次回到getq时不阻塞, 直接返回-1.
是什么原因引起的呢. 发现了个原因,不过不知道为什么.
My_Connector: public ACE_Task<ACE_NULL_SYNCH>
时getq不阻塞.
My_Connector: public ACE_Task<ACE_MT_SYNCH>
时getq阻塞。 ACE_MT_SYNCH里面带上了线程同步。在这个方面去想想。 pthread_cont_wait getq 返回-1时,你需要判断一下错误类型,然后调用continue,而不是直接return -1
if ((getq() == -1)&& (errno == EWOULDBLOCK)) {
continue;
}
页:
[1]