中止对getaddrinfo()的调用

时间:2016-12-27 22:29:30

标签: sockets winsock

getaddrinfo()是一个阻塞函数。

如何中止getaddrinfo()调用?

例如,在关闭我的应用程序时,我想中止对此函数的现有调用。

2 个答案:

答案 0 :(得分:0)

你不能像这样中止一个函数调用。

如果函数调用提供了中止或设置超时的方法,那么你可以,但是这个没有,大多数函数调用都没有。

但是,您可以在单独的线程中执行这些查找,现在您可以对执行这些查找的线程发出中止。

注意,在线程中进行查找并中止它并不能保证调用会立即结束,也不意味着线程会立即结束。

如果呼叫行为不正常或无法正常运行,情况尤其如此。

答案 1 :(得分:0)

getaddrinfo()是一个无法中止的阻止功能。

在Windows 8及更高版本中,您可以改用GetAddrInfoEx()。 Unicode版本(GetAddrInfoExW())支持调用者提供的超时以及重叠I / O,或者它可以为异步任务返回HANDLE,然后可以将其传递给GetAddrInfoExCancel()