closesocket()执行很长时间

时间:2014-04-01 21:00:40

标签: c++ windows multithreading network-programming

我创建了一个测试应用程序;我使用Platinum库来实现UPnP协议,我遇到了问题:关闭窗口后进程没有完成,忽略了我尝试使用任务管理器杀死它。我可以在接下来的1-10分钟内查看我的应用程序的幽灵。

调试后我可以说网络代码中存在问题 - 白金代码创建4个线程,用于在网络接口上接收UDP数据包。当我销毁所有库对象并且它们在所有其他线程之后关闭时,此线程不会关闭。 NPT_BsdSocketFd的析构函数中的问题 - 当它调用closesocket()执行时,不会从此函数返回:( 每个线程都有自己的套接字用于接收。

~NPT_BsdSocketFd() {
    if (m_Cancellable) {
        if (!NPT_BSD_SOCKET_IS_INVALID(m_CancelFds[0])) closesocket(m_CancelFds[0]);
        if (!NPT_BSD_SOCKET_IS_INVALID(m_CancelFds[1])) closesocket(m_CancelFds[1]);
    }
    closesocket(m_SocketFd);  //problem here...
}

有谁知道为什么closesocket()执行这么长时间?

0 个答案:

没有答案