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

yehao's Blog

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

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

      首先,需要說明的是這三個函數都與CreateThread。CreateThread函數是Windows的一個API函數,其具體的使用方法在 MSDN和《Windows核心編程》上都有詳細介紹。主要的作用是創建一個線程。_beginthreadex函數是C/C++運行庫提供的函數,從 _beginthreadex函數的源代碼,可以看出它的主要動作是:增加了一個名為ptd的_ptiddata的結構的處理,然后在調用CreateThread函數。_ptiddata是每個線程都擁有自己的專用的數據結構。關于使用CreateThread代替_beginthreadex的結果以及可能出現的問題在《Windows核心編程》上講的很清楚: “也許你想知道,如果調用CreateThread,而不是調用C/C++運行期庫的_beginthreadex來創建新線程,將會發生什么情況。當一個線程調用要求_ptiddata結構的C / C + +運行期庫函數時,將會發生下面的一些情況(大多數C / C + +運行期庫函數都是線程安全函數,不需要該結構)。

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

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

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

       2、用_beginthreadex()函數應該是最佳選擇,因為_beginthreadex()函數是CRun-timeLibrary中的函數,函數的參數和數據類型都是CRun-timeLibrary中的類型,這樣在啟動線程時就不需要進行Windows數據類型和CRun-timeLibrary中的數據類型之間的轉化。減低了線程啟動時的資源消耗和時間的消耗!

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

      C運行庫_beginthreadex()。他經過一些處理后,再調用CreateThread()如果要強制結束的話也最好用_endthreadex結束,因為他也要一些處理。 總結上面的內容,當然《Windows核心編程》上面得說法是比較權威的。所以,在對線程的結構、運行還不是很了解的時候最好還是按照書上的來。這樣能夠避免一些可能出現的莫名奇妙的錯誤,也省去的一些其他結構處理的考慮。當你清楚地知道線程的結構與運行機制,以及了解各個函數對CreateThread函數的封裝的時候,大概那時候就能夠應用自如了


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/haisujiang/archive/2009/05/30/4225109.aspx

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

導航

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

統計

常用鏈接

留言簿

隨筆分類

文章分類

文章檔案

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品美女久久福利网站| 亚洲视频网在线直播| 亚洲一区高清| 国产精品免费看片| 午夜久久久久久| 欧美一区二区视频观看视频| 国产亚洲福利| 免费永久网站黄欧美| 美女999久久久精品视频| 日韩网站在线观看| 亚洲免费av片| 国产日本欧美一区二区| 久久一二三区| 欧美精品麻豆| 欧美在线观看日本一区| 久久精品在线播放| 日韩天堂av| 亚洲综合国产精品| 亚洲电影第1页| 亚洲靠逼com| 国产亚洲午夜高清国产拍精品| 另类综合日韩欧美亚洲| 欧美精品三级| 久久久久久久久综合| 欧美 日韩 国产精品免费观看| 亚洲四色影视在线观看| 欧美一区永久视频免费观看| 91久久精品一区二区三区| 在线中文字幕一区| 在线看片欧美| 亚洲天堂成人| 91久久久久久| 欧美一区成人| 亚洲一区二区三区午夜| 久久久免费av| 新狼窝色av性久久久久久| 老鸭窝毛片一区二区三区| 亚洲午夜精品一区二区| 久久综合九色99| 亚洲欧美精品一区| 女女同性女同一区二区三区91| 欧美一区二区视频观看视频| 欧美成人精品在线观看| 久久精品二区| 国产精品你懂得| 亚洲欧洲日夜超级视频| 国产精品二区二区三区| 亚洲国产精品嫩草影院| 怡红院精品视频| 亚洲一级黄色| 中日韩高清电影网| 欧美刺激性大交免费视频| 久久久久综合一区二区三区| 国产精品激情| 亚洲精选一区二区| 亚洲精品美女在线| 老司机67194精品线观看| 久久久蜜臀国产一区二区| 国产精品免费电影| 亚洲视频一区二区| 亚洲一区二区三区高清| 欧美日韩ab片| 最新成人在线| 亚洲电影免费观看高清| 久久精品亚洲一区二区三区浴池| 久久gogo国模啪啪人体图| 国产精品福利在线观看网址| 艳女tv在线观看国产一区| 亚洲免费观看高清在线观看| 欧美成在线视频| 欧美激情一区二区三区蜜桃视频 | 在线视频日本亚洲性| 亚洲美女精品一区| 欧美高清在线一区二区| 亚洲精品麻豆| 亚洲精品久久嫩草网站秘色| 亚洲精品国精品久久99热一| 免费亚洲视频| 亚洲国产一成人久久精品| 亚洲国产精品久久| 蜜桃av一区二区三区| 亚洲国产精品成人一区二区| 亚洲精品在线看| 欧美日韩精品一区二区天天拍小说| 亚洲国产专区校园欧美| 99v久久综合狠狠综合久久| 欧美精品入口| 亚洲欧美不卡| 久热国产精品| 亚洲激情电影在线| 欧美天堂在线观看| 午夜精品国产更新| 免费成人黄色| 一区二区欧美日韩视频| 国产精品资源在线观看| 久久久久亚洲综合| 亚洲啪啪91| 久久xxxx| 9l国产精品久久久久麻豆| 国产精品每日更新| 久久久中精品2020中文| 亚洲免费播放| 看欧美日韩国产| 亚洲午夜久久久久久久久电影院| 国产欧美日韩精品专区| 麻豆freexxxx性91精品| 一区二区三区回区在观看免费视频 | 欧美高清视频免费观看| 一区二区欧美精品| 激情综合久久| 欧美另类专区| 久久久久久免费| 一本色道久久综合亚洲精品小说| 久久久久久亚洲精品杨幂换脸| 亚洲美女一区| 国产区亚洲区欧美区| 欧美bbbxxxxx| 亚洲综合视频网| 免费观看成人鲁鲁鲁鲁鲁视频 | 久久综合久久综合这里只有精品 | 亚洲久久在线| 国产精品网站在线观看| 久久中文在线| 一区二区三区国产盗摄| 美女黄网久久| 亚洲欧美国产日韩天堂区| 依依成人综合视频| 国产精品久久久久久久久果冻传媒| 免费短视频成人日韩| 亚洲免费在线看| 亚洲精品一二三| 久久亚洲私人国产精品va| 亚洲一区二区三区四区五区午夜 | 奶水喷射视频一区| 亚洲欧美日韩一区二区| 欧美高清成人| 久久精品视频网| 亚洲一区二区视频| 亚洲欧美日韩国产成人| 国产目拍亚洲精品99久久精品| 欧美极品一区| 久久综合伊人| 久久精品电影| 亚洲欧美成人在线| 99在线精品观看| 亚洲狼人精品一区二区三区| 欧美成人一区二区在线| 久久久久国色av免费看影院| 亚洲一区二区网站| 99在线视频精品| 久久午夜羞羞影院免费观看| 久久免费偷拍视频| 午夜精品视频网站| 中日韩美女免费视频网站在线观看| 尤妮丝一区二区裸体视频| 国产欧美一区二区三区沐欲 | 国产精品一区一区三区| 国产精品乱子乱xxxx| 欧美体内she精视频在线观看| 欧美日韩1区| 欧美一区二区三区男人的天堂| 韩国精品主播一区二区在线观看| 国产美女精品免费电影| 国产精品久久久一区二区三区| 国产精品专区第二| 国产一区二区三区在线观看精品| 国产精品永久免费在线| 国产精品一区久久久| 国产一区二区三区久久精品| 国产日韩一区二区三区| 国产在线乱码一区二区三区| 欧美日本不卡高清| 夜夜嗨av一区二区三区四区| 午夜精品美女久久久久av福利| 一区二区精品在线| 亚洲一卡久久| 久久综合国产精品| 欧美国产精品| 亚洲蜜桃精久久久久久久| 亚洲天堂成人在线视频| 欧美一级成年大片在线观看| 久久久久国产免费免费| 免费高清在线一区| 欧美午夜欧美| 国产精品一二三四区| 亚洲黄网站在线观看| 99精品久久| 久久国产精彩视频| 欧美粗暴jizz性欧美20| 亚洲综合日韩中文字幕v在线| 性高湖久久久久久久久| 老司机成人网| 国产精品美女黄网| 亚洲国产高清视频| 午夜精品影院| 欧美激情精品久久久久久蜜臀 | 亚洲欧美日本在线| 免费日韩成人| 亚洲一区二区免费看| 美女国产一区|