cocos2d-x-2.0.4的网络连接库CCHttpClient的BUG

转载请注明出处:csdn火木达人
BUG描述:当网络正常的时候可以正常请求,但是当网络不正常的时候,CCHttpClient的线程体过一段时间会崩溃掉。

原因:libcurl 中设置了CURLOPT_CONNECTTIMEOUT,它会产生一个信号量,它打断了CCHttpClient线程体中的sem_wait,然后导致整个程序崩溃。
libcurl使用alarm来实现超时的判断,在多线程环境里,alarm产生的信号会打断一切主循环,然后导致非常难以察觉的Bug。

解决方法:把CURLOPT_NOSIGNAL设为1就行了,这样libcurl将不会产生任何信号。

curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);

http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTNOSIGNAL


没有更多推荐了,返回首页