同步API,会阻塞:
getaddrinfo: IPV4 and IPV6, linux依赖<netdb.h>, windows依赖<ws2tcpip.h>
gethostbyname: only IPV4
异步:
libevent
getaddrinfo_a, 会执行注册的callback函数, c-ares库,另起一线程,select/poll类似,监听socket并调用callback
在libcurl里,不会额外开线程,会在libcurl的线程里面不断的poll
10:27:56.326 4382 4382 I AEE/AED : Backtrace:
10:27:56.326 4382 4382 I AEE/AED : #00 pc 00024014 /system/lib/libcurl.tgl.so (query_completed_cb) curl/lib/asyn-ares.c:466
10:27:56.326 4382 4382 I AEE/AED : #01 pc 000022bf /system/lib/libcares.so (end_hquery) cares/src/ares_gethostbyname.c:231
10:27:56.326 4382 4382 I AEE/AED : #02 pc 00006d81 /system/lib/libcares.so (qcallback) cares/src/ares_query.c:180
10:27:56.326 4382 4382 I AEE/AED : #03 pc 000065cb /system/lib/libcares.so (end_query) cares/src/ares_process.c:1266
10:27:56.326 4382 4382 I AEE/AED : #04 pc 000067d3 /system/lib/libcares.so (process_answer) cares/src/ares_process.c:547
10:27:56.326 4382 4382 I AEE/AED : #05 pc 00006a0b /system/lib/libcares.so (processfds) cares/src/ares_process.c:152
10:27:56.326 4382 4382 I AEE/AED : #06 pc 00006ceb /system/lib/libcares.so (ares_process_fd+14) cares/src/ares_process.c:173
10:27:56.326 4382 4382 I AEE/AED : #07 pc 00024113 /system/lib/libcurl.tgl.so (waitperform +xx) curl/lib/asyn-ares.c:296
10:27:56.326 4382 4382 I AEE/AED : #08 pc 0002422f /system/lib/libcurl.tgl.so (Curl_resolver_is_resolved+22)
10:27:56.326 4382 4382 I AEE/AED : #09 pc 0001ff59 /system/lib/libcurl.tgl.so (multi_runsingle+xx)
10:27:56.326 4382 4382 I AEE/AED : #10 pc 000206c3 /system/lib/libcurl.tgl.so (curl_multi_perform+98)
原文:http://www.cnblogs.com/zzSoftware/p/3891630.html