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

yehao's Blog

CreateThread()、_beginthreadex()及、AfxBeginThread()函數(shù)的討論

操作系統(tǒng)中線程是非常重要的概念,所以關(guān)于線程的創(chuàng)建常常有些困擾人的內(nèi)容。好像創(chuàng)建線程的函數(shù)很多,那么他們之間的有什么聯(lián)系與區(qū)別呢?正如題目給出的三個(gè)函數(shù)。今天看了看Windows核心編程,再找了一些網(wǎng)上的資料,在此想說說這些函數(shù)之間的關(guān)系和區(qū)別。如有不正確的地方,請各位不吝賜教。

      首先,需要說明的是這三個(gè)函數(shù)都與CreateThread。CreateThread函數(shù)是Windows的一個(gè)API函數(shù),其具體的使用方法在 MSDN和《Windows核心編程》上都有詳細(xì)介紹。主要的作用是創(chuàng)建一個(gè)線程。_beginthreadex函數(shù)是C/C++運(yùn)行庫提供的函數(shù),從 _beginthreadex函數(shù)的源代碼,可以看出它的主要?jiǎng)幼魇牵涸黾恿艘粋€(gè)名為ptd的_ptiddata的結(jié)構(gòu)的處理,然后在調(diào)用CreateThread函數(shù)。_ptiddata是每個(gè)線程都擁有自己的專用的數(shù)據(jù)結(jié)構(gòu)。關(guān)于使用CreateThread代替_beginthreadex的結(jié)果以及可能出現(xiàn)的問題在《Windows核心編程》上講的很清楚: “也許你想知道,如果調(diào)用CreateThread,而不是調(diào)用C/C++運(yùn)行期庫的_beginthreadex來創(chuàng)建新線程,將會(huì)發(fā)生什么情況。當(dāng)一個(gè)線程調(diào)用要求_ptiddata結(jié)構(gòu)的C / C + +運(yùn)行期庫函數(shù)時(shí),將會(huì)發(fā)生下面的一些情況(大多數(shù)C / C + +運(yùn)行期庫函數(shù)都是線程安全函數(shù),不需要該結(jié)構(gòu))。

       首先, C / C + +運(yùn)行期庫函數(shù)試圖(通過調(diào)用T l s G e t Va l u e )獲取線程的數(shù)據(jù)塊的地址。如果返回N U L L作為t i d d a t a塊的地址,調(diào)用線程就不擁有與該地址相關(guān)的_t i d d a t a塊。這時(shí),C / C + +運(yùn)行期庫函數(shù)就在現(xiàn)場為調(diào)用線程分配一個(gè)_t i d d a t a塊,并對它進(jìn)行初始化。然后該_t i d d a t a塊(通過T l s S e t Va l u e)與線程相關(guān)聯(lián)。此時(shí),只要線程在運(yùn)行,該_t i d d a t a將與線程待在一起。這時(shí),C / C + +運(yùn)行期庫函數(shù)就可以使用線程的_t i d d a t a塊,而且將來被調(diào)用的所有C / C + +運(yùn)行期函數(shù)也能使用_t i d d a t a塊。當(dāng)然,這看來有些奇怪,因?yàn)榫€程運(yùn)行時(shí)幾乎沒有任何障礙。不過,實(shí)際上還是存在一些問題。首先,如果線程使用C / C + +運(yùn)行期庫的s i g n a l函數(shù),那么整個(gè)進(jìn)程就會(huì)終止運(yùn)行,因?yàn)榻Y(jié)構(gòu)化異常處理幀尚未準(zhǔn)備好。

       第二,如果不是調(diào)用_ e n d t h r e a d e x來終止線程的運(yùn)行,那么數(shù)據(jù)塊就不會(huì)被撤消,內(nèi)存泄漏就會(huì)出現(xiàn)(那么誰還為使用C r e a t e T h r e a d函數(shù)創(chuàng)建的線程來調(diào)用_ e n d t h r e a d e x呢?)。”對于上面所說的兩個(gè)問題:我也是有疑問的:使用CreateThread創(chuàng)建線程后,用CloseHandle函數(shù)關(guān)閉相應(yīng)的線程句柄,不會(huì)對_ptiddata結(jié)構(gòu)進(jìn)行釋放嗎?另外在網(wǎng)上看到一些關(guān)于這三個(gè)函數(shù)的討論如下: 一直對這三個(gè)創(chuàng)建線程的方法都搞不清楚,不知道在什么情況下該用那種方法,下面是從網(wǎng)上摘錄的一些帖子:

       1、不要在一個(gè)MFC程序中使用_beginthreadex()或CreateThread()。這句話的意思是由于AfxBeginThread()是MFC封裝的啟動(dòng)線程的函數(shù),里面包含了很多和MFC相關(guān)的啟動(dòng)信息,而且封裝了一些常用的操作,使用起來也比較簡便。而用另外兩個(gè)函數(shù)就需要程序員對類型,安全性檢查進(jìn)行更多的思考!

       2、用_beginthreadex()函數(shù)應(yīng)該是最佳選擇,因?yàn)開beginthreadex()函數(shù)是CRun-timeLibrary中的函數(shù),函數(shù)的參數(shù)和數(shù)據(jù)類型都是CRun-timeLibrary中的類型,這樣在啟動(dòng)線程時(shí)就不需要進(jìn)行Windows數(shù)據(jù)類型和CRun-timeLibrary中的數(shù)據(jù)類型之間的轉(zhuǎn)化。減低了線程啟動(dòng)時(shí)的資源消耗和時(shí)間的消耗!

      3、在C程序中,幾乎都要用到new和delete,難道只有使用_beginthreadex()?不,因?yàn)镸FC也是C類庫(只不過是Microsoft的C類庫,不是標(biāo)準(zhǔn)的C類庫),在MFC中也封裝了new和delete兩中運(yùn)算符,所以用到new和delete的地方不一定非要使用_beginthreadex()函數(shù),用其他兩個(gè)函數(shù)都可以!其實(shí)在程序中使用上面的哪個(gè)函數(shù)并不是絕對的,書的作者只不過是提了一個(gè)更佳的搭配方法,我在MFC程序中也經(jīng)常使用_beginthreadex()和CreateThread()這兩個(gè)函數(shù),運(yùn)行的效果也沒有多大的區(qū)別,有的時(shí)候只是需要你額外的進(jìn)行一些類型檢查和其他的一些轉(zhuǎn)化操作,其余沒有其他不妥! 創(chuàng)建線程只有一個(gè)方法是::CreateThread()。_beginthreadex()、AfxBeginThread()等內(nèi)部都是調(diào)用這個(gè)函數(shù)的,因?yàn)椴僮飨到y(tǒng)只提供這一個(gè)接口C靜態(tài)庫比WINDOWS出來還早,就別提多線程了,所以他對多線程的支持不是很好,但后悔也來不急,但也不能怪人家。

      C運(yùn)行庫_beginthreadex()。他經(jīng)過一些處理后,再調(diào)用CreateThread()如果要強(qiáng)制結(jié)束的話也最好用_endthreadex結(jié)束,因?yàn)樗惨恍┨幚怼?總結(jié)上面的內(nèi)容,當(dāng)然《Windows核心編程》上面得說法是比較權(quán)威的。所以,在對線程的結(jié)構(gòu)、運(yùn)行還不是很了解的時(shí)候最好還是按照書上的來。這樣能夠避免一些可能出現(xiàn)的莫名奇妙的錯(cuò)誤,也省去的一些其他結(jié)構(gòu)處理的考慮。當(dāng)你清楚地知道線程的結(jié)構(gòu)與運(yùn)行機(jī)制,以及了解各個(gè)函數(shù)對CreateThread函數(shù)的封裝的時(shí)候,大概那時(shí)候就能夠應(yīng)用自如了


本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/haisujiang/archive/2009/05/30/4225109.aspx

posted on 2011-04-25 13:49 厚積薄發(fā) 閱讀(417) 評論(0)  編輯 收藏 引用 所屬分類: Windows編程

導(dǎo)航

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

統(tǒng)計(jì)

常用鏈接

留言簿

隨筆分類

文章分類

文章檔案

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲精品国产无天堂网2021| 亚洲少妇一区| 鲁大师影院一区二区三区| 小黄鸭精品aⅴ导航网站入口| 国产精品天天看| 欧美一区二区视频观看视频| 性欧美精品高清| 亚洲福利一区| 亚洲人体大胆视频| 国产精品v欧美精品v日韩| 性伦欧美刺激片在线观看| 亚洲欧美中文字幕| 在线精品高清中文字幕| 日韩视频中午一区| 国产欧美精品在线播放| 欧美暴力喷水在线| 欧美日韩一区成人| 久久国产免费看| 欧美国产亚洲视频| 欧美在线欧美在线| 欧美3dxxxxhd| 欧美在线视频二区| 欧美成人xxx| 午夜精品久久久久久久蜜桃app| 久久国产88| 亚洲午夜在线观看视频在线| 欧美一区二区精品久久911| 91久久久久久久久久久久久| 亚洲一区二区三| 亚洲欧洲午夜| 欧美一区日本一区韩国一区| 99热免费精品在线观看| 欧美在线视频一区二区| 一本大道久久a久久综合婷婷| 亚洲一区二区三区精品在线| 亚洲国产精品一区二区www在线 | 亚洲人成网站在线观看播放| 亚洲色图自拍| 亚洲精品中文字幕在线| 久久久久久成人| 欧美一区二区三区四区在线观看地址| 久久久av毛片精品| 欧美有码在线观看视频| 欧美日韩一区视频| 亚洲国产精品一区二区尤物区| 国产美女精品视频免费观看| 99国产欧美久久久精品| 91久久国产精品91久久性色| 欧美一区二区三区视频免费| 亚洲女女女同性video| 欧美电影在线观看完整版| 每日更新成人在线视频| 国产日韩精品一区二区三区在线| 99精品视频免费| 亚洲精品一区二区网址| 久热成人在线视频| 久久三级视频| 狠狠色狠色综合曰曰| 午夜亚洲一区| 午夜精品久久久久久久蜜桃app| 欧美激情综合| 亚洲人成7777| 99精品欧美一区二区三区| 欧美二区视频| 亚洲片在线资源| 夜夜嗨av一区二区三区免费区| 美日韩精品视频免费看| 亚洲国产精品久久久久秋霞不卡 | 欧美精品情趣视频| 亚洲电影观看| 亚洲精品永久免费精品| 欧美理论在线播放| 99精品国产在热久久| 亚洲尤物视频网| 国产女主播一区二区三区| 亚洲欧美日韩精品久久久久| 欧美在线网站| 激情小说亚洲一区| 欧美不卡一卡二卡免费版| 亚洲七七久久综合桃花剧情介绍| 日韩一级精品视频在线观看| 欧美三区美女| 欧美一级播放| 欧美福利电影网| 一本久久知道综合久久| 国产精品手机视频| 久久久精品一区| 亚洲人体大胆视频| 亚洲欧美在线高清| 一色屋精品视频免费看| 欧美激情第4页| 亚洲一区三区在线观看| 老司机精品久久| 一本色道久久综合亚洲精品按摩| 欧美日韩在线不卡一区| 午夜亚洲福利在线老司机| 欧美xxx成人| 香蕉成人久久| 亚洲国产精品毛片| 国产精品久久久久久久9999| 欧美在线观看一区| 亚洲精品在线电影| 久久精品亚洲精品国产欧美kt∨| 亚洲啪啪91| 国产一区二区三区精品欧美日韩一区二区三区 | 久久成年人视频| 亚洲国产另类 国产精品国产免费| 欧美日韩国内| 久久偷窥视频| 亚洲一区二区三区在线播放| 欧美国产欧美综合| 欧美专区在线观看| 妖精成人www高清在线观看| 国产一区二区三区久久精品| 欧美日韩a区| 老司机久久99久久精品播放免费 | 久久久午夜精品| 亚洲视频一区二区| 欧美黄色aa电影| 久久精品国产精品亚洲精品| 一区二区三区精品国产| 亚洲国产精彩中文乱码av在线播放| 欧美性猛交xxxx乱大交退制版| 免费不卡欧美自拍视频| 欧美一级播放| 亚洲一区二区视频在线观看| 亚洲欧洲精品一区二区三区不卡 | 黑丝一区二区| 国产视频在线观看一区| 欧美视频精品在线| 欧美激情片在线观看| 久久久综合网站| 欧美亚洲免费在线| 亚洲欧美区自拍先锋| 一区二区三区日韩精品| 亚洲人成亚洲人成在线观看| 欧美成人一区二区三区在线观看 | 99视频精品在线| 亚洲国语精品自产拍在线观看| 久久人人九九| 久久免费少妇高潮久久精品99| 欧美在线视频一区二区| 午夜精品免费视频| 午夜精品久久久久久99热| 亚洲天堂网在线观看| 亚洲视频在线视频| 亚洲一区二区黄| 午夜精品99久久免费| 午夜激情综合网| 久久国产欧美日韩精品| 久久精品在线免费观看| 久久婷婷久久| 欧美成人一区二区三区| 亚洲福利在线观看| 亚洲免费av电影| 亚洲天堂偷拍| 欧美影院在线播放| 久久亚洲国产精品日日av夜夜| 玖玖视频精品| 欧美日本一道本在线视频| 国产精品国产馆在线真实露脸| 国产精品日韩一区二区| 狠狠色伊人亚洲综合网站色| 亚洲成色最大综合在线| 日韩午夜三级在线| 午夜精品久久久久久久99黑人| 欧美在线黄色| 欧美寡妇偷汉性猛交| 亚洲精选一区| 欧美淫片网站| 欧美国产日本在线| 国产精品午夜电影| 亚洲国产精品va| 亚洲自拍偷拍麻豆| 牛夜精品久久久久久久99黑人| 亚洲区在线播放| 亚洲欧洲av一区二区| 欧美1区2区| 国产麻豆成人精品| 亚洲精品久久久久中文字幕欢迎你| 亚洲免费小视频| 欧美成人久久| 亚洲欧美日韩国产一区二区| 噜噜噜91成人网| 国产九区一区在线| 日韩视频免费观看| 久久亚洲二区| 亚洲一区二区三| 欧美黄色成人网| 精品成人国产在线观看男人呻吟| 在线亚洲免费| 亚洲大胆视频| 欧美一区二区视频97| 欧美日韩福利视频| 亚洲第一精品夜夜躁人人爽| 欧美一区影院| 正在播放欧美视频| 欧美另类99xxxxx| 亚洲国产精品视频| 久久最新视频|