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

牽著老婆滿(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>
            久久免费视频网站| 一区二区三区四区五区视频| 久久精品国产在热久久 | 亚洲精品国产系列| 欧美激情女人20p| 一区二区精品国产| 亚洲视频中文字幕| 国产一区二区按摩在线观看| 久久综合久久久| 欧美不卡在线| 亚洲女同性videos| 久久激五月天综合精品| 亚洲精品一级| 亚洲一区日韩| 亚洲国产精品第一区二区| 亚洲精品一区二区三区99| 国产精品免费区二区三区观看| 久久se精品一区二区| 老司机免费视频久久| 亚洲性线免费观看视频成熟| 午夜精品福利一区二区三区av | 欧美成人综合一区| 亚洲自拍16p| 美女福利精品视频| 在线视频亚洲欧美| 午夜影院日韩| 亚洲精美视频| 亚洲免费中文| 99视频热这里只有精品免费| 午夜视频在线观看一区二区三区| 亚洲国产网站| 欧美一区二区三区在线看| 亚洲美女av黄| 久久久精品999| 午夜视频一区二区| 欧美激情综合色综合啪啪| 久久精品国产成人| 欧美日韩精品一区二区三区| 蜜臀久久99精品久久久久久9 | 欧美日韩午夜在线| 欧美成人资源网| 国产女人18毛片水18精品| 亚洲人成网站777色婷婷| 国产一区二区三区视频在线观看| 夜夜嗨av色一区二区不卡| 亚洲激情视频在线观看| 先锋资源久久| 性色av一区二区怡红| 欧美日韩国产小视频| 欧美激情一二三区| 伊人精品成人久久综合软件| 亚洲一区日韩在线| 亚洲欧美国产日韩天堂区| 欧美日韩综合在线免费观看| 亚洲国产精品嫩草影院| 亚洲激情电影在线| 米奇777超碰欧美日韩亚洲| 久久亚洲精品一区| 国产真实精品久久二三区| 亚洲欧美中文另类| 欧美一区二区三区久久精品| 国产精品劲爆视频| 一区二区免费看| 亚洲已满18点击进入久久| 欧美激情视频一区二区三区免费| 亚洲高清资源| 亚洲精品一区二区三区樱花 | 一区二区三区.www| 午夜电影亚洲| 国产亚洲精品综合一区91| 亚洲欧美日韩综合国产aⅴ| 久久不射中文字幕| 红桃视频亚洲| 玖玖玖免费嫩草在线影院一区| 老司机aⅴ在线精品导航| 亚洲第一区在线| 欧美成在线视频| 99伊人成综合| 久久se精品一区二区| 伊人精品久久久久7777| 欧美77777| 夜夜嗨av一区二区三区四区| 欧美在线免费观看| 激情综合网址| 欧美经典一区二区三区| 亚洲视频在线二区| 久久蜜臀精品av| 欧美中文日韩| 欧美黄色一区二区| 欧美激情按摩在线| 日韩一区二区精品视频| 欧美揉bbbbb揉bbbbb| 亚洲欧美日韩综合| 欧美高清视频一二三区| 亚洲线精品一区二区三区八戒| 国产精品视频区| 免费视频最近日韩| 在线视频你懂得一区二区三区| 久久久亚洲国产天美传媒修理工| 亚洲国产欧美日韩| 国产精品久久久一区麻豆最新章节 | 久久久精品国产免费观看同学 | 欧美精品v日韩精品v韩国精品v| 亚洲视频网在线直播| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩午夜免费| 尤物网精品视频| 欧美系列亚洲系列| 免费亚洲一区二区| 亚洲欧美日韩高清| 亚洲韩国日本中文字幕| 久久九九国产精品怡红院| 亚洲视频 欧洲视频| 在线国产欧美| 国产日韩亚洲欧美综合| 欧美日韩在线视频观看| 狼人天天伊人久久| 欧美在线高清视频| 正在播放亚洲一区| 亚洲国产美女| 欧美激情小视频| 久久青草欧美一区二区三区| 亚洲一区二区三区高清| 亚洲精品视频一区二区三区| 黑人巨大精品欧美一区二区 | 久久精品日韩一区二区三区| 在线视频精品一区| 亚洲欧洲日本在线| 欧美黑人国产人伦爽爽爽| 久久精品夜色噜噜亚洲a∨ | 国产亚洲精品资源在线26u| 国产精品久久久久av免费| 欧美精品日韩www.p站| 免费久久99精品国产自在现线| 久久aⅴ国产紧身牛仔裤| 亚洲影院高清在线| 亚洲一区中文| 亚洲午夜精品| 亚洲午夜激情免费视频| 亚洲图片在线| 亚洲视频图片小说| 亚洲综合视频网| 亚洲女人天堂成人av在线| 亚洲尤物在线| 欧美一区二区播放| 久久aⅴ乱码一区二区三区| 久久精品国产欧美激情| 久久九九免费| 久久婷婷久久| 欧美激情1区2区3区| 欧美日韩亚洲综合一区| 欧美日韩在线精品一区二区三区| 欧美日韩中文在线| 国产精品嫩草久久久久| 国产亚洲毛片| 亚洲国产婷婷香蕉久久久久久| 久久久久国产精品人| 亚洲大胆女人| 亚洲青色在线| 亚洲特级毛片| 亚洲欧美在线一区| 久久久噜久噜久久综合| 欧美高清视频在线| 99www免费人成精品| 亚洲一区在线直播| 久久午夜电影网| 欧美精品免费在线观看| 国产精品久在线观看| 激情欧美日韩| 中文av字幕一区| 久久亚洲国产成人| 亚洲精品乱码久久久久久| 亚洲欧美视频在线观看视频| 久久视频一区| 欧美性做爰猛烈叫床潮| 国内激情久久| 一区二区三区精品视频| 久久久久免费视频| 亚洲精品一区二区三区婷婷月| 亚洲一区三区视频在线观看 | 亚洲视频一区| 美玉足脚交一区二区三区图片| 欧美日韩综合网| 亚洲高清在线| 午夜精品一区二区在线观看 | 欧美成人激情在线| 亚洲视频成人| 免费欧美高清视频| 国产日韩欧美| 中文av字幕一区| 欧美freesex8一10精品| 亚洲一区二区三区精品在线观看 | 欧美激情一区二区三区 | 欧美高清一区| 黄色另类av| 午夜精品久久久久久久99樱桃| 欧美激情按摩在线| 久久福利电影| 国产精品久久二区| 一个人看的www久久|