可能重复:
boost::async_write 耗时太长
在我的服务器应用程序中,我在一次读取中运行 asio 服务来处理大约 100 个连接。我发现 async_write() 有时需要很长时间,大约 15 毫秒。(数据包非常小)
我的问题是为什么 async_write() 需要这么长时间?我认为 async_write() 应该立即返回。这么慢是很难发送很多数据的。我的意思是,函数不会立即返回。我不是说发送不会立即完成。15ms 对于同步函数来说太长了。并且该应用程序确实被阻止了。(不关心 GetTickCount )
测试代码如下:
uint64_t TStart = 0, TEnd = 0;
TStart = GetTickCount();
async_write(*this->m_Socket,
boost::asio::buffer(pSendData->m_buf.GetBuffer(), pSendData->m_buf.GetSize()),
boost::bind(&SttSocketConnection::OnSended, this,
pSendData, placeholders::error, placeholders::bytes_transferred));
TEnd = GetTickCount();
if (TEnd - TStart > 1) {
__asm int 3;
TStart = TEnd;
}