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

牽著老婆滿街逛

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

IOCP中的socket錯誤和資源釋放處理方法

本文出處:http://blog.csdn.net/sodme
聲明:本文可以不經(jīng)作者同意任意轉(zhuǎn)載、復(fù)制、傳播,但任何對本文的引用均須保留本文的作者、出處及本行聲明信息!謝謝!

前言:?
錯誤處理和socket釋放, 是IOCP編程中的一大難點. 本文試圖就IOCP設(shè)計中經(jīng)常遇到的這個難題展開論述并尋找其解決方案, 事實上, 文中所述的解決方式不僅僅適用于IOCP, 它同樣適用于EPOLL等多種服務(wù)器編程的網(wǎng)絡(luò)模型中, 前提是: 領(lǐng)會這種處理方式的實質(zhì).

正文:
在使用IOCP開發(fā)時, 大家經(jīng)常遇到的一個難題是與socket相關(guān)的緩沖區(qū)釋放不當帶來的錯誤, 這種錯誤通常是由于多次對同一個指針執(zhí)行了delete操作引起的. 比如, 當在執(zhí)行wsasend或wsarecv返回了非pending的錯誤信息時, 我們就要對此錯誤進行處理, 通常情況下, 我們會想到執(zhí)行這兩步操作:
a. 釋放此次操作使用的緩沖區(qū)數(shù)據(jù)(如果不釋放可能造成內(nèi)存泄漏);
b. 關(guān)閉當前操作所使用的socket.
而另一方面, 我們可能也會在get函數(shù)(GetQueuedCompletionStatus)的處理中, 當get函數(shù)返回值為FALSE時也作這兩步相同的操作.? 此時, 就會造成對同一緩沖區(qū)的重復(fù)釋放, 問題由此產(chǎn)生.

解決的方法, 可以有這幾種:
1. 對數(shù)據(jù)緩沖區(qū)使用引用計數(shù)機制;
2. 在clientsock的對象設(shè)計機制上使釋放操作線性化.
關(guān)于這兩種方法, 任何一種如果要詳細說清, 可能篇幅都會比較長, 筆者并無耐心和精力將每一個細節(jié)都一一道來, 在此僅選第2種方案的關(guān)鍵步驟和核心思想來與大家分享.

由前面對問題的描述可以看出, 造成多次釋放的原因可能是在執(zhí)行收發(fā)操作和GET函數(shù)返回值為FALSE時, 我們重復(fù)執(zhí)行了釋放操作. 很自然地, 我們會想到,? 能不能把這兩次釋放合并成一次釋放,? 這樣不就沒問題了嗎?? yes,? 這個思路是沒問題的.? 但要想讓這個思路能變成現(xiàn)實,? 需要在設(shè)計機制上對這個思路進行一定的支持.

首先,? 我們假設(shè), 是在get函數(shù)返回時統(tǒng)一進行相應(yīng)的釋放和關(guān)閉操作.

如果在執(zhí)行wsasend操作時, 發(fā)生了非pending錯誤(io操作正在進行中), 而此時我們?nèi)绻会尫刨Y源, 那至少得讓IOCP在GET返回時得知這個錯誤和發(fā)生錯誤時的緩沖區(qū)指針. 通知IOCP的方式, 是使用post函數(shù)(PostQueuedCompletionStatus)向IOCP拋一個特殊標志的消息, 這個特殊標志可以通過get函數(shù)的第二個參數(shù), 即: 傳送字節(jié)數(shù)來表示, 可以選擇任何一個不可能出現(xiàn)的值, 比如任何一個跟它的初始值不相等的負數(shù).? 當然, 如果你通過單句柄數(shù)據(jù)或單IO數(shù)據(jù)來傳遞也是可以的. 而發(fā)生錯誤的這個緩沖區(qū)指針, 我們是必須要通過單句柄數(shù)據(jù)或單IO數(shù)據(jù)來傳遞的. 但是, 從整個緩沖區(qū)的管理機制上來說, 我不推薦這樣的離散緩沖區(qū)機制, 我的建議是: 把收發(fā)緩沖區(qū)或數(shù)據(jù)隊列與相應(yīng)的clientsocket對象相綁定, 釋放操作寫在該對象的析構(gòu)函數(shù)里, 這樣當釋放clientsocket對象時就釋放了這些緩沖區(qū).

ok, 這樣一來, 在get函數(shù)里, 有三種情況需要執(zhí)行釋放邏輯:
1. get的返回值為FALSE;
2. 傳送字節(jié)數(shù)為0;
3. 接收到剛才我們post的那個錯誤類型消息.

把釋放操作全放在get函數(shù)里以后, 對釋放操作的處理, 就比較統(tǒng)一了. 當然, 為了實現(xiàn)真正的線性化和元子化, 在釋放操作的最終執(zhí)行邏輯上, 還需要對釋放代碼加鎖以實現(xiàn)線程互斥(當然, 這是在你開了多個工作者線程的情況下).

posted on 2006-04-20 18:52 楊粼波 閱讀(893) 評論(0)  編輯 收藏 引用 所屬分類: 網(wǎng)絡(luò)編程

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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久久久久| 在线中文字幕不卡| 亚洲一区二区三区中文字幕| 亚洲免费在线电影| 久久动漫亚洲| 久久综合久久美利坚合众国| 免费精品视频| 一本色道久久综合精品竹菊| 亚洲综合色自拍一区| 欧美中文字幕视频在线观看| 麻豆视频一区二区| 国产精品jvid在线观看蜜臀| 国产综合久久久久影院| 99re6这里只有精品视频在线观看| 一区二区三区色| 久久久7777| 亚洲精品一品区二品区三品区| 亚洲午夜一级| 欧美www在线| 国产精品主播| 亚洲免费大片| 久久露脸国产精品| 最新69国产成人精品视频免费| 欧美视频福利| 欧美在线视频不卡| 欧美欧美全黄| 精品不卡视频| 欧美亚洲视频在线观看| 欧美激情一二三区| 西西裸体人体做爰大胆久久久| 免费日韩av电影| 国产色综合久久| 亚洲综合激情| 亚洲日本va午夜在线电影| 久久大香伊蕉在人线观看热2| 欧美国产日本韩| 尤物网精品视频| 久久成人精品| 亚洲视频国产视频| 欧美精品一区二区三| 悠悠资源网亚洲青| 久久精品人人做人人爽电影蜜月| 亚洲伦理在线免费看| 久久综合激情| 国产婷婷色一区二区三区| 亚洲免费网址| 日韩午夜在线电影| 欧美激情免费观看| 亚洲三级视频在线观看| 农村妇女精品| 老牛影视一区二区三区| 国产综合色一区二区三区 | 欧美一区二视频在线免费观看| 欧美色图首页| 亚洲欧美电影院| 一区电影在线观看| 国产精品福利网站| 亚洲欧美日韩第一区| 亚洲视频一区二区在线观看| 欧美另类99xxxxx| 一本色道久久99精品综合| 亚洲激情在线视频| 欧美精品免费播放| 亚洲视频自拍偷拍| 亚洲亚洲精品三区日韩精品在线视频| 欧美连裤袜在线视频| 一区二区高清| 亚洲无亚洲人成网站77777| 国产精品第一页第二页第三页| 亚洲私拍自拍| 午夜免费在线观看精品视频| 国产一区二区三区成人欧美日韩在线观看| 久久精品成人一区二区三区蜜臀| 欧美一级久久| 亚洲国产高清自拍| 亚洲另类在线视频| 国产日韩亚洲欧美| 农夫在线精品视频免费观看| 欧美理论电影在线播放| 欧美亚洲在线观看| 久久一区二区三区av| 久久精品国产99国产精品| 久久久久久网址| 亚洲日本国产| 亚洲午夜性刺激影院| 一区二区三区在线观看欧美| 欧美韩国一区| 国产精品久线观看视频| 久久婷婷综合激情| 欧美日韩国产一区精品一区| 羞羞色国产精品| 免费观看一区| 性做久久久久久久久| 久久在线免费视频| 亚洲图片在线观看| 久久久www| 亚洲性xxxx| 久久精品在线| 午夜精品久久久久久久蜜桃app | 亚洲一区二区三区色| 欧美在线地址| 中文网丁香综合网| 久久亚洲不卡| 午夜精品一区二区三区在线视| 久久视频国产精品免费视频在线| 亚洲视频第一页| 麻豆精品在线观看| 久久成人免费| 国产精品美女www爽爽爽视频| 欧美黄在线观看| 国产一区视频在线看| 99riav1国产精品视频| 亚洲高清资源| 久久国产福利| 欧美中文字幕精品| 欧美日韩少妇| 亚洲国产欧洲综合997久久| 激情成人综合| 午夜在线观看免费一区| 亚洲综合色激情五月| 欧美日韩精品一区视频 | 欧美激情视频一区二区三区不卡| 国产欧美欧洲在线观看| 99视频一区二区三区| 亚洲美女色禁图| 欧美a级一区| 亚洲丶国产丶欧美一区二区三区| 国内综合精品午夜久久资源| 亚洲免费在线观看| 午夜视频精品| 国产精品丝袜久久久久久app| 亚洲激情女人| 日韩西西人体444www| 欧美成人国产va精品日本一级| 男同欧美伦乱| 亚洲欧洲视频在线| 欧美激情偷拍| 亚洲精品日韩欧美| 一片黄亚洲嫩模| 欧美四级电影网站| 亚洲线精品一区二区三区八戒| 亚洲免费视频成人| 亚洲精品一区二区在线观看| 另类专区欧美制服同性| 美女精品网站| 亚洲第一页中文字幕| 免费成人小视频| 91久久精品网| 亚洲一区国产| 国产情人节一区| 久久久久五月天| 亚洲国产精品一区二区www在线| 亚洲精品免费在线播放| 欧美性猛交99久久久久99按摩| 亚洲图片欧美一区| 久久综合色婷婷| 日韩午夜在线电影| 国产精品理论片在线观看| 欧美一区二区在线视频| 欧美激情按摩| 亚洲自拍三区| 在线观看日韩欧美| 欧美日韩在线一区| 欧美一级在线视频| 亚洲欧洲另类国产综合| 久久国产精品电影| 日韩亚洲欧美中文三级| 国产精品亚洲不卡a| 免费观看成人鲁鲁鲁鲁鲁视频| 99国产精品| 欧美成人中文字幕| 校园激情久久| 亚洲精品乱码久久久久| 国产欧美日本一区视频| 欧美高清视频在线播放| 亚洲欧美日韩另类| 91久久线看在观草草青青| 久久国产视频网| 日韩香蕉视频| 精品二区视频| 国产精品一区视频网站| 欧美乱大交xxxxx| 久久久久国产精品一区| 在线亚洲一区二区| 亚洲国产精品一区二区第四页av| 久久国产88| 亚洲一二三区精品| 亚洲精品资源| 亚洲国产天堂久久国产91| 国产伦精品一区二区三区视频孕妇| 美女久久一区| 久久国产加勒比精品无码| 亚洲一卡二卡三卡四卡五卡| 欧美激情在线有限公司| 久久亚洲不卡| 久久久另类综合| 久久成人综合视频|