青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿(mǎn)街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

關(guān)于使用libcurl的注意事項(xiàng)

libcurl與CLOSE_WAIT
轉(zhuǎn)載自:http://blog.sunshow.net/2010/03/libcurl-and-close-wait/

調(diào)用libcurl下載,然后使用netstat查看發(fā)現(xiàn)有大量的TCP連接保持在CLOSE_WAIT狀態(tài)
查看libcurl的文檔說(shuō)明,有這樣一個(gè)選項(xiàng):

CURLOPT_FORBID_REUSE

Pass a long. Set to 1 to make the next transfer explicitly close the connection when done. Normally, libcurl keeps all connections alive when done with one transfer in case a succeeding one follows that can re-use them. This option should be used with caution and only if you understand what it does. Set to 0 to have libcurl keep the connection open for possible later re-use (default behavior).

也就是說(shuō),默認(rèn)情況下libcurl完成一個(gè)任務(wù)以后,出于重用連接的考慮不會(huì)馬上關(guān)閉
如果沒(méi)有新的TCP請(qǐng)求來(lái)重用這個(gè)連接,那么只能等到CLOSE_WAIT超時(shí),這個(gè)時(shí)間默認(rèn)在7200秒甚至更高,太多的CLOSE_WAIT連接會(huì)導(dǎo)致性能問(wèn)題

解決方法:

curl_easy_setopt(curl, CURLOPT_FORBID_REUSE, 1);

 最好再修改一下TCP參數(shù)調(diào)低CLOSE_WAIT和TIME_WAIT的超時(shí)時(shí)間




libcurl 使用筆記
轉(zhuǎn)載自:http://gcoder.blogbus.com/logs/54871550.html

libcurl 是一個(gè)很不錯(cuò)的庫(kù),支持http,ftp等很多的協(xié)議。使用庫(kù)最大的心得就是,不仔細(xì)看文檔,僅僅看著例子就寫(xiě)程序,是一件危險(xiǎn)的事情。我的程序崩潰了,我懷疑是自己代碼寫(xiě)的問(wèn)題,后來(lái)發(fā)現(xiàn)是庫(kù)沒(méi)用對(duì)。不仔細(xì)看文檔(有時(shí)候文檔本身也比較差勁,這時(shí)除了看仔細(xì)外,還要多動(dòng)腦子,考慮它是怎么實(shí)現(xiàn)的),后果很?chē)?yán)重。不加思索的使用別人的庫(kù)或者代碼,有時(shí)候很愜意,但是出問(wèn)題時(shí),卻是寢食難安的。

1. CURLcode curl_global_init(long flags); 在多線程應(yīng)用中,需要在主線程中調(diào)用這個(gè)函數(shù)。這個(gè)函數(shù)設(shè)置libcurl所需的環(huán)境。通常情況,如果不顯式的調(diào)用它,第一次調(diào)用curl_easy_init()時(shí),curl_easy_init 會(huì)調(diào)用 curl_global_init,在單線程環(huán)境下,這不是問(wèn)題。但是多線程下就不行了,因?yàn)閏url_global_init不是線程安全的。在多個(gè)線程中調(diào)用curl_easy_int,然后如果兩個(gè)線程同時(shí)發(fā)現(xiàn)curl_global_init還沒(méi)有被調(diào)用,同時(shí)調(diào)用curl_global_init,悲劇就發(fā)生了。這種情況發(fā)生的概率很小,但可能性是存在的。

2. libcurl 有個(gè)很好的特性,它甚至可以控制域名解析的超時(shí)。但是在默認(rèn)情況下,它是使用alarm + siglongjmp 實(shí)現(xiàn)的。用alarm在多線程下做超時(shí),本身就幾乎不可能。如果只是使用alarm,并不會(huì)導(dǎo)致程序崩潰,但是,再加上siglongjmp,就要命了(程序崩潰的很可怕,core中幾乎看不出有用信息),因?yàn)槠湫枰粋€(gè)sigjmp_buf型的全局變量,多線程修改它。(通常情況下,可以每個(gè)線程一個(gè) sigjmp_buf 型的變量,這種情況下,多線程中使用 siglongjmp 是沒(méi)有問(wèn)題的,但是libcurl只有一個(gè)全局變量,所有的線程都會(huì)用)。

  具體是類(lèi)似 curl_easy_setopt(curl, CURLOPT_TIMEOUT, 30L) 的超時(shí)設(shè)置,導(dǎo)致alarm的使用(估計(jì)發(fā)生在域名解析階段),如前所述,這在多線程中是不行的。解決方式是禁用掉alarm這種超時(shí), curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L)。

  這樣,多線程中使用超時(shí)就安全了。但是域名解析就沒(méi)了超時(shí)機(jī)制,碰到很慢的域名解析,也很麻煩。文檔的建議是 Consider building libcurl with c-ares support to enable asynchronous DNS lookups, which enables nice timeouts for name resolves without signals.  c-ares 是異步的 DNS 解決方案。




 libcurl 多線程使用注意事項(xiàng)
轉(zhuǎn)載自:http://blog.csdn.net/jaylong35/article/details/6439549

1、問(wèn)題來(lái)源,多線程使用Libcurl導(dǎo)致程序跑一段時(shí)間后自己退出,沒(méi)有明顯的異常。找不到合適的BUG。

 最后通過(guò)查看資料和網(wǎng)上找的一些文章,發(fā)現(xiàn),原來(lái)是信號(hào)處理的問(wèn)題:

CURLOPT_NOSIGNAL

Pass a long. If it is 1, libcurl will not use any functions that install signal handlers or any functions that cause signals to be sent to the process. This option is mainly here to allow multi-threaded unix applications to still set/use all timeout options etc, without risking getting signals. (Added in 7.10)

If this option is set and libcurl has been built with the standard name resolver, timeouts will not occur while the name resolve takes place. Consider building libcurl with c-ares support to enable asynchronous DNS lookups, which enables nice timeouts for name resolves without signals.

Setting CURLOPT_NOSIGNAL to 1 makes libcurl NOT ask the system to ignore SIGPIPE signals, which otherwise are sent by the system when trying to send data to a socket which is closed in the other end. libcurl makes an effort to never cause such SIGPIPEs to trigger, but some operating systems have no way to avoid them and even on those that have there are some corner cases when they may still happen, contrary to our desire. 

就是當(dāng)多個(gè)線程都使用超時(shí)處理的時(shí)候,同時(shí)主線程中有sleep或是wait等操作。如果不設(shè)置這個(gè)選項(xiàng),libcurl將會(huì)發(fā)信號(hào)打斷這個(gè)wait從而導(dǎo)致程序退出。

所以,在使用的時(shí)候把這個(gè)選項(xiàng)設(shè)置成1就可以了.

curl_setopt(curl, CURLOPT_NOSIGNAL, 1L);


2、關(guān)于libcurl庫(kù)的初始化和關(guān)閉:curl_global_init()和curl_global_cleanup()

這兩個(gè)函數(shù)并不是線程安全的。所以只能在主線程中進(jìn)行一次的初始化和清除。

雖然這個(gè)不是一定就會(huì)有問(wèn)題,但是如果不這樣處理還是有概率發(fā)生的。

posted on 2012-02-20 11:39 楊粼波 閱讀(3593) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 文章收藏網(wǎng)絡(luò)編程C++

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            美女91精品| 国产一区二区三区日韩| 亚洲美女黄网| 欧美国产综合视频| 老司机成人在线视频| 免费在线成人av| 亚洲成人资源网| 久久久久九九视频| 国产精品美女久久久| 最新69国产成人精品视频免费| 久久国产欧美精品| 久久精品视频一| 欧美成人精品1314www| 亚洲电影专区| 亚洲一区在线观看视频| 欧美亚洲一区二区三区| 久久亚洲综合网| 欧美日本国产视频| 国产嫩草一区二区三区在线观看| 国产亚洲欧美日韩精品| 亚洲国产成人不卡| 亚洲一区二区av电影| 久久精品色图| 亚洲精品国产系列| 欧美亚洲一区二区三区| 欧美人与禽猛交乱配| 国产九区一区在线| 亚洲精品婷婷| 久久精品九九| 亚洲国产影院| 欧美亚洲日本一区| 欧美区在线观看| 在线 亚洲欧美在线综合一区| 亚洲另类视频| 久久夜色精品亚洲噜噜国产mv| 亚洲日韩成人| 久久精品亚洲一区二区| 欧美日韩综合网| 亚洲黑丝在线| 久久久久国产精品一区| 亚洲精品久久嫩草网站秘色 | 欧美日韩国产综合新一区| 国产一区自拍视频| 亚洲欧美日韩中文播放| 欧美mv日韩mv国产网站app| 亚洲一区二区三区免费观看 | 国产精品久久久久久久免费软件 | 免费成人在线观看视频| 欧美高清在线| 一区二区日韩| 欧美日韩99| 亚洲精选久久| 久久精品天堂| 先锋影音久久久| 国产精品视频免费一区| 亚洲图片在线| 日韩视频一区二区三区在线播放| 日韩一级片网址| 欧美jizz19hd性欧美| 国产一区二区在线观看免费播放| 久久久久综合网| 蘑菇福利视频一区播放| 一个色综合导航| 午夜欧美大尺度福利影院在线看 | 午夜视频久久久久久| 亚洲国产成人高清精品| 一本色道久久综合亚洲精品高清| 国产欧美精品一区二区三区介绍| 欧美.www| 在线观看日韩欧美| 性18欧美另类| 久久婷婷蜜乳一本欲蜜臀| 欧美日韩亚洲免费| 亚洲精品影院| 一区二区三区精品视频| 毛片基地黄久久久久久天堂| 亚洲一区二区三区四区五区午夜 | 性做久久久久久久久| 欧美精品一区二区在线播放| 亚洲激情综合| 日韩亚洲欧美一区二区三区| 欧美福利在线| 日韩午夜激情电影| 欧美在线高清视频| 狠狠色狠狠色综合日日91app| 欧美与黑人午夜性猛交久久久| 亚洲欧美日韩国产成人| 国产日韩精品在线| 久久精品视频免费播放| 亚洲电影视频在线| 久久国产视频网站| 亚洲国产精选| 午夜免费电影一区在线观看| 国产一级精品aaaaa看| 男人插女人欧美| 午夜亚洲性色福利视频| 欧美精品在欧美一区二区少妇| 亚洲综合第一页| 亚洲麻豆av| 亚洲国产片色| 蜜桃av一区二区| 久久成人这里只有精品| 日韩视频免费在线观看| 曰韩精品一区二区| 国产视频精品网| 国产伦精品免费视频| 欧美日韩岛国| 老司机免费视频一区二区| 久久精品首页| 亚洲女爱视频在线| 一区在线观看视频| 老鸭窝毛片一区二区三区| 老司机午夜精品视频| 国产精品多人| 亚洲乱码一区二区| 久久综合九九| 欧美1区2区视频| 久久国产福利| 欧美电影免费| 在线欧美不卡| 亚洲黄色av| 亚洲免费成人av| 亚洲一区久久久| 午夜精品影院在线观看| 亚洲欧美日韩中文视频| 美女精品在线观看| 欧美aⅴ99久久黑人专区| 亚洲国产mv| 亚洲精品孕妇| 亚洲一区二区av电影| 亚洲人成77777在线观看网| 亚洲国产高清高潮精品美女| 亚洲特级片在线| 一本色道88久久加勒比精品 | 日韩午夜电影| 欧美制服丝袜| 国产乱人伦精品一区二区| 亚洲精品欧洲精品| 久久狠狠久久综合桃花| 亚洲欧美视频一区| 国产精品欧美久久久久无广告| 日韩视频免费| 中文精品视频| 国产一区二区三区日韩| 亚洲欧美日本国产有色| 日韩午夜激情电影| 欧美日韩一区二区精品| 亚洲电影免费观看高清完整版在线 | 久久国产精品色婷婷| 136国产福利精品导航网址| 久久亚洲视频| 欧美高清视频免费观看| 在线亚洲免费视频| 亚洲韩国青草视频| 欧美一区影院| 中文国产成人精品| 久久爱www.| 亚洲国产高清自拍| 久久成人免费电影| 欧美电影在线播放| 亚洲欧洲在线一区| 亚洲一区二区三区视频播放| 在线观看日韩av| 午夜久久一区| 亚洲视频一区二区| 模特精品在线| 欧美色综合网| 亚洲精品一二三| 精久久久久久久久久久| 亚洲欧美日韩综合国产aⅴ | 亚洲国产毛片完整版| 免费日韩av电影| 亚洲国产精品成人久久综合一区| 久久国产精品久久久久久| 亚洲视频碰碰| 欧美成人午夜| 伊人精品成人久久综合软件| 亚洲精品在线观| 久久精品官网| 亚洲经典在线看| 欧美成va人片在线观看| 国产精品嫩草影院一区二区| 国产一区亚洲一区| 久久久视频精品| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲欧美日韩直播| 久久综合伊人| 一本大道久久精品懂色aⅴ| 欧美激情一区二区三区蜜桃视频 | 六月婷婷久久| 在线观看日韩国产| 久久人人97超碰精品888| 欧美一区不卡| 麻豆成人av| 蜜臀av在线播放一区二区三区| 欧美精品久久99| 亚洲免费一区二区| 亚洲美女毛片| 国产精品爽爽ⅴa在线观看| 亚洲一区二区在线|