首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡課程 模擬考試 考友錄 實用文檔 繽紛校園 英語學習 | ||
2010考研 | 自學考試 | 成人高考 | 專 升 本 | 法律碩士 | MBA/MPA | 中 科 院 | ||
四六級 | 商務英語 | 公共英語 | 職稱日語 | 職稱英語 | 博思 | 口譯筆譯 | GRE GMAT | 日語 | 托福 | ||
雅思 | 專四專八 | 新概念 | 自考英語 | 零起點英、法、德、日、韓語 | 在職申碩英語 | ||
在職攻碩英語 | 成人英語三級 | ||
等級考試 | 水平考試 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證 | ||
公務員 | 報關員 | 報檢員 | 外銷員 | 司法考試 | 導游考試 | 教師資格 | 國際商務師 | 跟單員 | ||
單證員 | 物流師 | 價格鑒證師 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 人力資源管理師 | 管理咨詢師 | ||
期貨從業(yè)資格 | 社會工作者 | ||
會計職稱 | 注會CPA | 經(jīng)濟師 | 統(tǒng)計師 | 注冊稅務師 | 評估師 | 精算師 | 高會 | ACCA | 審計師 | ||
法律顧問 | 會計證 | ||
一級建造師 | 二級建造師 | 造價師 | 監(jiān)理師 | 安全師 | 咨詢師 | 結(jié)構師 | 建筑師 | 安全評價師 | ||
房地產(chǎn)估價師 | 土地估價師 | 設備監(jiān)理師 | 巖土工程師 | 質(zhì)量資格 | 房地產(chǎn)經(jīng)紀人 | 造價員 | ||
投資項目管理 | 土地代理人 | 環(huán)保師 | 環(huán)境影響評價 | 物業(yè)管理師 | 城市規(guī)劃師 | 公路監(jiān)理師 | ||
公路造價工程師 | 招標師 | ||
執(zhí)業(yè)護士 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 衛(wèi)生資格 |
線程庫是基礎庫系統(tǒng)中一個重要的組成模塊。設計線程庫時,應該首先考慮它的模型的建立,以及它應該所涵蓋的功能。主要包括有用于線程間互斥和同步控制的功能實現(xiàn)與封裝,線程的創(chuàng)建、運行和銷毀,以及訪問并控制線程的一些運行狀態(tài)或錯誤狀態(tài)等。另外線程庫也涉及到,線程之間的數(shù)據(jù)共享或數(shù)據(jù)通信等功能的實現(xiàn)。下面我們主要介紹兩種有代表性的線程庫的實現(xiàn),也即MFC中的線程庫和JDK平臺中的線程模型。
MFC中為了實現(xiàn)線程間互斥和同步控制功能,主要提供有四種類型的對象,如圖10-57所示,包括CCriticalSection、CEvent、CMutex以及CSemaphore等。
首先介紹CMutex類型,它是對NT操作系統(tǒng)內(nèi)核中提供的互斥對象(mutex)的封裝。它能夠確保線程擁有對單個資源的互斥訪問權,也即多線程對共享資源的互斥訪問。互斥對象包含一個使用數(shù)量,一個線程ID和一個遞歸計數(shù)器。并且線程在等待訪問資源時可以設定一個超時值。
CCriticalSection類型是對臨界區(qū)(critical section)的封裝。它的作用與特性和CMutex類似,都是用于線程間對共享資源的互斥訪問,但是它與CMutex之間稍有不同的是,它不屬于內(nèi)核對象,而是屬于用戶方式的對象。所以它的效率要比CMutex高很多,并且因為如此,它也只能被用于線程之間的互斥控制,而不能用于進程之間的互斥。
CEvent是對事件(event)內(nèi)核對象的封裝,它是一個最基本,也最靈活的,被用于線程間實現(xiàn)同步的控制對象。CEvent能夠通知一個操作已經(jīng)完成。它有兩種不同類型的事件對象。一種是人工重置的事件,另一種是自動重置的事件。當人工重置的事件得到通知時,等待該事件的所有線程均變?yōu)榭烧{(diào)度線程。當一個自動重置的事件得到通知時,等待該事件的線程中只有一個線程變?yōu)榭烧{(diào)度線程。
最后一個就是CSemaphore類型,它是對信號量(Semaphore)內(nèi)核對象的封裝。適用于線程之間的同步控制,它是功能最強、使用最靈活,也最復雜的同步控制對象。
除了上面講述到的幾種用于實現(xiàn)線程間互斥和同步的控制對象外,MFC的線程庫中還有一個非常重要的類模塊,也即CWinThread,它是表示應用程序中的執(zhí)行線程,管理線程的創(chuàng)建、運行和銷毀,以及其它許多方面的功能(如線程優(yōu)先級、狀態(tài)等)。