• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      幾種典型同步模型的探討

      2017-11-20 13:25:14魯向前謝垂益
      電腦知識與技術(shù) 2017年27期
      關(guān)鍵詞:同步線程進程

      魯向前+謝垂益

      摘要:從同步線程數(shù)量和同步方向角度把同步模型分為六種類型,即單線程-單線程單向同步、單線程-單線程循環(huán)雙向同步、單線程-多線程單向全部同步、單線程-多線程單向部份同步、多線程-單線程單向全部同步和多線程-單線程單向部份同步。在Windows7+VS2012平臺下,使用每線程一窗口的獨立窗口過程函數(shù)獨立處理窗口消息,實現(xiàn)同步線程之間輸出無耦合,力求使同步驗證簡單直觀。實踐證明,模型分類簡單,驗證過程有效。

      關(guān)鍵詞:線程;進程;同步;并發(fā);并行

      中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2017)27-0266-03

      Abstract: Divide the synchronization(hereinafter referred to as SYN) model into six types from the perspective of synchronous threads number and the SYN direction,including Single-Single Threads(SST) one-way SYN,SST two-way loop SYN,Single-Multiple Threads(SMT) one-way all SYN,SMT one-way partial SYN,MST one-way all SYN and MST one-way partial SYN.In the Windows7+VS2012 platform, with the method of one window per thread and its independent window process function to handle the window message,to achieve non-coupled output between the SYN threads, and strive to make SYN verification simple and intuitive.Practice prove that the model classification is simple and the verification process is effective.

      Key words: thread; process; synchronization; concurrency; parallel

      1 背景

      互斥同步技術(shù)是實現(xiàn)操作系統(tǒng)內(nèi)核功能如進程控制、進程通信等的基本保障技術(shù)[1],同時,許多應(yīng)用軟件在解決并發(fā)并行任務(wù)時也廣泛使用操作系統(tǒng)中原本為內(nèi)核需求提供的同步互斥技術(shù)[2-3]。因此對該技術(shù)進行歸納和建立一些標(biāo)準(zhǔn)的應(yīng)用模板,對我們在解決應(yīng)用中的并發(fā)并行問題具有啟發(fā)意義。

      不同的操作系統(tǒng)以及不同語言集成開發(fā)類庫或第三方提供的開發(fā)軟件包提供的同步互斥內(nèi)核技術(shù)和開發(fā)接口并不相同,但從應(yīng)用端來說,可以使用相似的同步互斥框架來實現(xiàn),一般都是使用P/V原語的方法來描述同步互斥的解決方案。

      操作系統(tǒng)中同步互斥綜合實例有哲學(xué)家進餐問題、讀者-寫者問題、生產(chǎn)者-消費者問題等,許多學(xué)者對這些算法進行了研究和實現(xiàn)[4-7]。本文從線程數(shù)量和同步方向角度總結(jié)出幾種典型的同步模型,并在Windows7+VS2012平臺上實現(xiàn)和驗證,以幫助開發(fā)者厘清思路,快速選擇同步應(yīng)用方案。

      2 Windows提供的同步對象及接口介紹

      Windows提供的同步對象有事件對象、信號量對象等[8],每種同步對象提供了相應(yīng)的創(chuàng)建對象的內(nèi)核函數(shù)以及相關(guān)的其他對象操作函數(shù)。

      1) 事件對象:Windows提供的創(chuàng)建事件對象函數(shù)是CreateEvent。該函數(shù)返回事件對象句柄。函數(shù)的第二個參數(shù)用于指定創(chuàng)建的事件對象是否是人工重置的事件對象,如果為false,表示非人工重置(即自動重置)事件對象,如果為true,表示人工重置事件對象。函數(shù)的第三個參數(shù)表示事件對象的初始狀態(tài),如果為true,表示事件對象創(chuàng)建成功后的初值為有信號狀態(tài),否則為非信號狀態(tài)。

      事件對象的相關(guān)函數(shù)主要有:SetEvent和ResetEvent。自動重置事件對象在任意一個等待該事件對象的線程被釋放時,都會自動的將該事件對象置為非信號狀態(tài)。ResetEvent函數(shù)主要用于人工重置事件對象。人工重置對象不能自動被置為非信號狀態(tài),必須調(diào)用ResetEvent函數(shù)才能置為非信號狀態(tài)。人工重置事件對象為有信號狀態(tài)時,對使用該指定事件對象作為參數(shù)調(diào)用Wait**函數(shù)的任何數(shù)量的等待線程或后續(xù)線程,都能夠獲得同步信號。

      2) 信號量對象:Windows提供的創(chuàng)建信號量對象函數(shù)是CreateSemaphore。函數(shù)的第三個參數(shù)用于指定信號量對象的最大值,第二個參數(shù)用于指定信號量對象內(nèi)部計數(shù)變量的初始值。操作系統(tǒng)內(nèi)核對信號量對象內(nèi)部計數(shù)變量值進行管理,當(dāng)一個線程調(diào)用ReleaseSemaphore函數(shù)時,該值會加上指定值,當(dāng)釋放待該信號量對象的線程時,該值會減1。

      3) 同步對象的相關(guān)函數(shù):Windows提供一組可以使線程阻塞自身執(zhí)行的等待函數(shù),如WaitForSingleObject與WaitForMultipleObjects,分別用于等待單一同步信號和等待多個同步信號。一個線程在調(diào)用這類函數(shù)后,如果等待的同步對象處于非信號狀態(tài),將會被置于阻塞狀態(tài)。當(dāng)同步對象處于有信號狀態(tài)時,操作系統(tǒng)會發(fā)送同步信號給該線程。

      3 幾種典型的同步模型

      下文同步模型圖形中的符號約定:實線箭頭代表線程的執(zhí)行流程,虛線箭頭代表同步信號的發(fā)生過程(但要注意,同步信號并非由一個線程直接發(fā)送到另一個線程,而是由操作系統(tǒng)完成同步信號的通信過程),矩形框代表線程處于阻塞狀態(tài)。endprint

      在實現(xiàn)中每個線程創(chuàng)建各自獨立的窗口,各個窗口使用各自獨立的窗口過程函數(shù)進行消息處理。

      創(chuàng)建同步對象的代碼寫在程序主函數(shù)內(nèi),其他代碼寫在各自線程窗口過程函數(shù)內(nèi)的鼠標(biāo)右擊事件中。實現(xiàn)代碼中的WaitFor**函數(shù)相當(dāng)于P原語,SetEvent函數(shù)和ReleaseSemaphore函數(shù)相當(dāng)于V原語。

      驗證時應(yīng)先在B系列線程的窗口中右擊鼠標(biāo),以使B系列線程先執(zhí)行P原語,線程阻塞(即等待同步信號),然后再在A系列線程的窗口中右擊,使A系列線程執(zhí)行V原語,讓線程發(fā)出同步信號,以便觀察所有線程的同步執(zhí)行結(jié)果。

      1) 單線程-單線程單向同步

      2) 單線程-單線程循環(huán)雙向同步

      同步模型如圖2所示。模型中使用兩個自動重置事件對象。初始時使一個處于有信號狀態(tài),另一個處于無信號狀態(tài)。

      3) 單線程-多線程單向全部同步

      6) 多線程-單線程單向部份同步

      同步模型如圖6所示。實現(xiàn)時與(5)相似,只需把線程B代碼中的4改為3即可。驗證時只需A系列線程中的任意3個線程發(fā)出同步信號即可激活B線程。

      4 結(jié)束語

      本文使用Windows平臺提供的同步對象實現(xiàn)了多種同步模板,但各種同步模型的實現(xiàn)方法并不唯一,讀者也可以使用其他同步對象或同步通信函數(shù)來實現(xiàn)。讀者也可以使用其他平臺如Linux+Java平臺提供的類似的同步技術(shù)來完成,也可以在Windows平臺下使用VS的封裝接口進行實現(xiàn)。

      參考文獻:

      [1] 湯小丹, 梁紅兵, 哲鳳屏, 等. 計算機操作系統(tǒng)[M]. 西安: 西安電子科技大學(xué)出版社, 2014.

      [2] 牛欣源. 進程同步的資源管理模型構(gòu)建與應(yīng)用[J]. 計算機技術(shù)與發(fā)展, 2010, 20(06):9-12,17.

      [3] 王曉瑞. 基于SOA的分布式異構(gòu)數(shù)據(jù)庫數(shù)據(jù)信息同步系統(tǒng)的研究與應(yīng)用[D].開封: 河南大學(xué), 2016.

      [4] 張步忠. Java語言中的線程同步互斥研究[J]. 安慶師范學(xué)院學(xué)報:自然科學(xué)版, 2011, 17(4):106-110.

      [5] 魯力, 韓潔, 徐琴. PV操作解決進程同步問題的難點研究與實現(xiàn)[J]. 電腦知識與技術(shù), 2017, 13(13):38-39.

      [6] 常靜. 操作系統(tǒng)中PV操作實現(xiàn)進程的同步與互斥[J]. 電腦知識與技術(shù), 2012, 18(30):7144-7147,7153.

      [7] 高升, 陳月峰. 哲學(xué)家就餐問題的算法實現(xiàn)[J]. 計算機工程與科學(xué), 2016, 38(2):269-276.

      [8] Windows幫助文檔[EB/OL].https://msdn.microsoft.com/en-us/library/windows/desktop/ms686360(v=vs.85).aspx.endprint

      猜你喜歡
      同步線程進程
      債券市場對外開放的進程與展望
      中國外匯(2019年20期)2019-11-25 09:54:58
      淺談linux多線程協(xié)作
      素質(zhì)教育理念下藝術(shù)教育改革的思路
      政府職能的轉(zhuǎn)變與中國經(jīng)濟結(jié)構(gòu)調(diào)整的同步
      商情(2016年42期)2016-12-23 14:26:58
      公共藝術(shù)與城市設(shè)計的協(xié)調(diào)與同步
      一種新型雙軌同步焊接的焊接裝置
      社會進程中的新聞學(xué)探尋
      我國高等教育改革進程與反思
      Linux僵死進程的產(chǎn)生與避免
      Linux線程實現(xiàn)技術(shù)研究
      峨山| 杨浦区| 江永县| 呼图壁县| 八宿县| 东辽县| 新兴县| 枣阳市| 泽库县| 广灵县| 古丈县| 连江县| 长丰县| 宣城市| 珲春市| 南城县| 中卫市| 平南县| 嘉禾县| 大理市| 平舆县| 建始县| 广河县| 弥渡县| 唐河县| 慈溪市| 化隆| 汪清县| 财经| 高青县| 青河县| 崇阳县| 四川省| 尖扎县| 务川| 海伦市| 沁阳市| 沂源县| 峨山| 涟源市| 二连浩特市|