私は今ゲームサーバーを書いています。ここに私の 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;
}
}
スレッドプールのロジックハンドラで読み込み中のパケットを移動しようとしたのですが、通知が重複して呼び出されます。
通知を 1 つだけ取得する方法はありますか? スレッドでの読み取りが遅く、onReadable を 5 ~ 9 回呼び出すためです。ありがとう。