getaddrinfo阻塞时间太长,有啥解决办法

如果是Windows的话,有getaddrinfo的异步版本(GetAddrInfoEx function (Windows))。 Android这个比ios还老的系统不可能没有吧。
■网友
本地实现一个 Cache,App 一启动就开始解析可能用到的 addrinfo,然后把结果存着
■网友
谢谢大家的答案~,有朋友说使用异步api,多线程之类,考虑到已经是线上项目,为了求稳,不太想改代码结构。现在的解决方法是在初始化的时候cache下所需要的addrinfo,后面不再请求,所以网络情况差的时候,也不会卡住了,这样改动比较小,原来的代码结构不用改。发现有朋友已经提到这个答案了^_^
■网友
我知道libuv里是开了个线程去调用这个函数的,然后有结果了再通知回主线程
■网友
这个问题在项目中遇到了,简单来说是,调用一个签名算法需要初始化Mac 实例,初始化过程中需要调用系统熵,获取local信息时候卡住了,发现是jdk1.7后面实现变了,添加了local 本地的IPv4,6的映射解决
■网友
boost async_resolve

■网友
根据协议自己去发网络包 做成异步的 实在不会 开个线程 在线程里面做这个事情
■网友
尝试异步版本 getaddrinfo_a
How to use getaddrinfo_a to do async resolve with glibc 【getaddrinfo阻塞时间太长,有啥解决办法】


    推荐阅读