• <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>
            posts - 34,comments - 2,trackbacks - 0
            1、線程的組成
            (1)、一個是線程的內核對象,操作系統用它管理線程。內核對象還是系統用來存放線程統計信息的地方。
            (2)、一個線程堆棧,用于維護線程執行時所需的所有函數參數和局部變量。

            2、線程的運行
               線程要在其進程的地址空間內執行代碼和處理數據。所以,假如一個進程上下文中有兩個以上的進程運行,這些線程將共享同一個地址空間。這些線程可以執行同樣的代碼,可以處理相同的數據。此外,這些線程還共享內核對象句柄,因為句柄表是針對每一個進程的,而不是針對每一個線程。

            3、線程的創建、
            (1)、如果應用程序中有多個線程函數,必須為它們指定不同的名稱,否則編譯器/鏈接器會認為你創建了一個函數的多個實現。
            (2)、你的線程函數(實際就是你的所有函數)應該盡可能使用函數參數和局部變量。使用靜態和全局變量時,多個線程可以同時訪問這些變量,這樣可能會破壞變量中保存的內容。然而,參數和局部變量是在線程堆棧上創建的。因此,不太可能被其他線程破壞。
            (3)、使用CreateThread、_beginthreadex創建,沒什么好說的。

            4、終止線程
            (1)、線程函數返回(這是強烈推薦的)。
            這是保證線程的所有資源都被正確清理的惟一方式。讓線程函數返回,可以確保以下正確的應用程序清理工作都得以執行:
            ?? 線程函數中創建的所有C++對象都通過其析構函數被正確銷毀。
            ?? 操作系統正確釋放線程堆棧使用的內存。
            ?? 操作系統把線程的退出代碼(在線程的內核對象中維護)設為線程函數的返回值。
            ?? 系統遞減少線程的內核對象的使用計數。

            (2)、線程通過調用ExitThread函數“殺死”自己(要避免使用這種方法)。
            導致操作系統清理該線程使用的所有操作系統資源。但是,你的C/C++資源(如C++類對象)不會被銷毀。

            (3)、同一個進程或另一個進程中的線程調用TerminateThread函數(要避免使用這種方法)。
            TerminateThread函數是異步的。也就是說,它告訴系統你想終止線程,但在函數返回時,并不
            保證線程已經終止了。如果需要確定線程已終止運行,還需要調用WaitForSingleObject。

            (4)、包含線程的進程終止運行(這種方法避免使用)。
            ExitProcess和TerminateProcess函數也可用于終止線程的運行。區別在于,這些函數會使終止運行的進程中的所有線程全部終止。同時,由于整個進程都會關閉,所以它所使用的所有資源肯定都會被清理。其中必然包括所有線程的堆棧。這兩個函數會導致進程中剩余的所有線程被強行“殺死”,這就好象是我們為剩余的每個線程都調TerminateThread。
            顯然,這意味著正確的應用程序清理工作不會執行:C++對象的析構函數不會被調用,數據不會回寫到磁盤……等等。

            正如我在本章開始就解釋的一樣,當應用程序的入口函數返回時,C/C+運行庫的啟動代碼將調用ExitProcess。因此,如果應用程序中并發運行著多個線程,你需要在主線程返回之前,顯式地處理好每個線程的終止過程。否則,其他所有正在運行的線程都會在毫無預警的前提下突然“死亡”。


            posted on 2011-10-07 23:10 Yu_ 閱讀(270) 評論(0)  編輯 收藏 引用 所屬分類: Windows程序設計
            少妇精品久久久一区二区三区| 国产精品成人精品久久久 | 久久久精品午夜免费不卡| 777久久精品一区二区三区无码| 精品综合久久久久久97超人| 久久久久亚洲AV综合波多野结衣 | 99re久久精品国产首页2020| 久久人人爽人爽人人爽av| 国产成人精品久久免费动漫| 久久综合视频网站| 精品久久久久久久久久中文字幕| 无码精品久久久天天影视| 国产精品久久久久蜜芽| 亚洲伊人久久成综合人影院 | 性做久久久久久久| 亚洲精品成人久久久| 国产精品久久永久免费| 久久综合综合久久综合| 日韩乱码人妻无码中文字幕久久| 亚洲AV成人无码久久精品老人| 亚洲精品乱码久久久久久| 久久久精品2019免费观看| 国产日产久久高清欧美一区| 免费观看久久精彩视频| 久久亚洲中文字幕精品一区| 91精品国产色综久久| 久久精品18| 69久久精品无码一区二区| 欧美成人免费观看久久| 久久久久久免费一区二区三区 | 国产午夜精品久久久久九九电影| 久久久久九九精品影院| 人妻精品久久无码专区精东影业| 国产一区二区三精品久久久无广告| 亚洲午夜久久久久久久久电影网 | 亚洲精品无码久久久久久| 国产精品久久久久9999高清| 国产精品久久久久久久久软件| 亚洲国产精品无码久久久蜜芽| 久久久精品人妻无码专区不卡 | 婷婷久久综合九色综合绿巨人 |