不知道使用UDT的人多不多,很大可能会石沉大海啊
=========================================================
我在使用UDT库的时候,linux下正常关闭一个连接耗时要300ms,Windows下耗时只要十几毫秒,跟踪到代码是在core.cpp中的
“
void CUDT::close()
{
if (!m_bOpened)
return;
if (0 != m_Linger.l_onoff)
{
uint64_t entertime = CTimer::getTime();
// 就是这个while循环耗时很长
while (!m_bBroken && m_bConnected && (m_pSndBuffer->getCurrBufSize() > 0) && (CTimer::getTime() - entertime < m_Linger.l_linger * 1000000ULL))
{
// linger has been checked by previous close() call and has expired
if (m_ullLingerExpiration >= entertime)
break;
if (!m_bSynSending)
{
// if this socket enables asynchronous sending, return immediately and let GC to close it later
if (0 == m_ullLingerExpiration)
m_ullLingerExpiration = entertime + m_Linger.l_linger * 1000000ULL;
return;
}
#ifndef WIN32
timespec ts;
ts.tv_sec = 0;
ts.tv_nsec = 1000000;
nanosleep(&ts, NULL);
#else
Sleep(1);
#endif
}
}
.................................
}
”
===================================================================
有没有对UDT协议熟悉的好友帮忙看看
不知道tcp 和upd 是不是一样再最后又一个time_wait 时间。https://img2018.cnblogs.com/blog/1332211/201810/1332211-20181007222316449-1952862315.png
谢谢回答
但问题点不在你说的上面