首页 新闻 赞助 找找看

UDT linux下关闭链接耗时过长

0
悬赏园豆:100 [待解决问题]

不知道使用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协议熟悉的好友帮忙看看

UDT
百行吴书的主页 百行吴书 | 初学一级 | 园豆:102
提问于:2018-12-13 17:26
< >
分享
所有回答(1)
0

不知道tcp 和upd 是不是一样再最后又一个time_wait 时间。https://img2018.cnblogs.com/blog/1332211/201810/1332211-20181007222316449-1952862315.png

xiaobaiskill | 园豆:1087 (小虾三级) | 2018-12-13 18:42

谢谢回答
但问题点不在你说的上面

支持(0) 反对(0) 百行吴书 | 园豆:102 (初学一级) | 2018-12-14 09:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册