• <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>

            C++ Programmer's Cookbook

            {C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

            C++多線程(十)


            多線程使用總結

            基礎:

            1)最好使用C++ runtime的函數創建線程,即調用_beginthreadex創建線程。CreateThread()函數并不會執行C運行時數據塊的變量的每線程初始化,因此在任何使用C運行時庫的應用中,不能使用CrateThread()函數。

            2)最好不要顯示的調用ExitThread()或TerminateThread(),因為調用這些不進行清理工作。

            3)SuspendThread()掛起線程時,要考慮該線程是否擁有Mutex或Semaphore,如果擁有的話可能會導致死鎖。

            4)信號量Semaphore,是一個可以限制對指定的臨界段進行訪問的線程的數目的數據結構。

            5)互斥量Mutex和關鍵代碼段CriticalSection,他們的作用是相同的,都是用來保證某時刻只有一個線程能夠訪問全局或靜態的資源。區別是:Mutex是內核對象,可以設置等待超時時間,可以在不同的進程的線程中使用,但是所消耗的時間也比較多。CriticalSection與Mutex相反。

            6)互鎖函數,可以用來實現原子操作。對于一些簡單的問題,比如說int變量的自加,交換。。。

            7)線程局部存儲(TLS),可以為全局或靜態變量對不同的線程有不同的拷貝。

            高級:

            8)線程池,可以實現在程序中根據需要動態的創建線程,比如在server端,根據訪問的用戶的多少來創建線程的多少。在windows2000以后增加了創建線程池的API,比如 QueueUserWorkItem()。

            9)線程的優先級,用來保證重要的事情先被完成。不能使用線程的優先級來解決線程的同步問題。

            10) 處理器親和,就是將線程固定在某cpu上執行,這樣在某些情況下有助于提高性能,例如我們有雙核的且支持超線程技術的cpu,我們有4個線程,有2個是IO操作,有2個是大量的計算,對于上面的問題,我們就可以使用處理器親和,使用API設置,來達到cpu使用的均和,更好的提高性能。

            11) 纖程,用戶級的線程機制,比線程小的單位,開發人員負責管理纖程的調度,同時負責確定纖程何時在線程時間片上下文中運行,一般不會帶來性能的提高,主要的目的是為開發人員調度多個不需要并行執行的任務提供一個便捷的機制。

            12) 是否需要使用多線程,最總是需要測試來決定的,而且對于不同的CPU結果也不相同。避免使用過多的線程而帶來性能下降。


            其他多線程技術:

            13) MFC多線程,多Windows多線程API的封裝。

            14) Boost多線程。

            15) POSIX,Pthreads,是一個可以移植的多線程庫。一般是Linux和Unix是商用較多。

            16) Intel Open MP+,是一種可移植的多線程解決方案。(www.openmp.org)。


            多線程調試:

            17) 支持多線程的Log。

            18) VS2005中,可以查看Thread窗口,掛起或恢復線程,切換當前的線程和檢查線程狀態。或是使用TracePoint來輸出消息到output。

            19)使用SetThreadName()來對線程命名,使用線程信息block (http://www.codeproject.com/threads/xtib.asp)。

            20) 使用Intel多線程線程檢測器,Intel調試器。。。

             

            posted on 2007-08-02 09:59 夢在天涯 閱讀(11401) 評論(1)  編輯 收藏 引用 所屬分類: CPlusPlus

            評論

            # re: C++多線程(十)[未登錄] 2008-11-11 21:02 小魚

            辛苦了謝謝!  回復  更多評論   

            公告

            EMail:itech001#126.com

            導航

            統計

            • 隨筆 - 461
            • 文章 - 4
            • 評論 - 746
            • 引用 - 0

            常用鏈接

            隨筆分類

            隨筆檔案

            收藏夾

            Blogs

            c#(csharp)

            C++(cpp)

            Enlish

            Forums(bbs)

            My self

            Often go

            Useful Webs

            Xml/Uml/html

            搜索

            •  

            積分與排名

            • 積分 - 1804603
            • 排名 - 5

            最新評論

            閱讀排行榜

            色妞色综合久久夜夜| 久久嫩草影院免费看夜色| 久久伊人五月丁香狠狠色| 一本色道久久88—综合亚洲精品| 久久久久国产精品人妻| 精品国产福利久久久| 97精品伊人久久大香线蕉| 国产亚洲欧美成人久久片| 无码人妻久久一区二区三区蜜桃| 久久99热精品| 亚洲午夜久久久久久噜噜噜| 国产精品美女久久久免费| 久久久久人妻精品一区二区三区 | 久久久久无码精品国产| 99久久99久久精品国产片| 日韩人妻无码一区二区三区久久| 日本加勒比久久精品| 国产成人精品综合久久久| 亚洲伊人久久大香线蕉综合图片| 久久嫩草影院免费看夜色| 999久久久免费精品国产| 伊人久久大香线蕉综合热线| yellow中文字幕久久网| 91精品国产91久久综合| 久久精品人人做人人爽97| 一本久久知道综合久久| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 国产一区二区精品久久凹凸 | 区久久AAA片69亚洲| 欧美亚洲另类久久综合婷婷| 国产免费久久精品丫丫| 94久久国产乱子伦精品免费| 久久99亚洲网美利坚合众国| 婷婷久久香蕉五月综合加勒比| 伊人久久五月天| 欧美日韩精品久久免费| 综合久久一区二区三区| 亚洲国产香蕉人人爽成AV片久久| 久久e热在这里只有国产中文精品99| 精品九九久久国内精品| 免费国产99久久久香蕉|