我现在正在编写游戏服务器,这是我的onReadable函数:
void CSConnection::onReadable(const AutoPtr<ReadableNotification>& pNf)
{
try
{
char * rbuff = new char[128](); //allocate incoming packet memory
int n = _socket.receiveBytes(rbuff, 128);
if(n > 8)
{
WorkerThreadPool::getInstance().tp->start(*new LogicHandler(*this, rbuff));
}
else
{
delete rbuff;
delete this;
}
}
catch(Poco::Exception& exc)
{
app.logger().log(exc);
delete this;
}
}
我试图在线程池的逻辑处理程序中移动读取数据包,但通知被称为multiply。
有没有办法只收到一个通知? 因为线程读取速度较慢,并且在onReadable上调用5-9次。 感谢。