• 
    

    
    

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

      基于帶抑止弧Petri網(wǎng)的C#多線程程序分析

      2011-05-11 07:17:32陳麗特
      關(guān)鍵詞:庫(kù)所線程錯(cuò)誤

      陳麗特

      (安徽理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,安徽 淮南 232001)

      引言。在單個(gè)程序里面同時(shí)運(yùn)行多個(gè)線程來(lái)完成不同任務(wù),稱為多線程。多線程主要目的是為了節(jié)約CPU時(shí)間,提高CUP的利用率。但多線程會(huì)給程序帶來(lái)更多難以發(fā)現(xiàn)的bug。Petri是一種功能強(qiáng)大的分布式系統(tǒng)的建模分析工具。在描述、模擬、分析系統(tǒng)的順序、沖突、并發(fā)和同步等關(guān)系上有著其他模擬分析工具難以比擬的優(yōu)勢(shì)。

      1 帶抑止弧Petri的概念。定義:一個(gè)五元組Σ=(S,T,F,I,M)組成一個(gè)帶抑止弧的Petri網(wǎng),(S,T,F)代表一個(gè)網(wǎng),其中M表示一個(gè)網(wǎng)的標(biāo)識(shí),I。

      2 應(yīng)用實(shí)例。"生產(chǎn)者/消費(fèi)者"問(wèn)題是線程同步控制的非常典型的例子,本文的程序中Producer線程負(fù)責(zé)生產(chǎn)商品,Consumer線程負(fù)責(zé)在有商品的時(shí)候消費(fèi)商品。PandC類的對(duì)象是生產(chǎn)商品線程和消費(fèi)商品線程共同訪問(wèn)的商品數(shù)據(jù)。

      程序如下:

      這個(gè)程序沒(méi)有對(duì)線程進(jìn)行同步,運(yùn)行程序時(shí)不會(huì)出現(xiàn)問(wèn)題,但是多次運(yùn)行程序后會(huì)陷入死機(jī)程序出現(xiàn)錯(cuò)誤。這個(gè)錯(cuò)誤發(fā)生的幾率很小,錯(cuò)誤的原因也難以查找。但是依據(jù)上文的建模規(guī)則建立這個(gè)程序的Petri網(wǎng)模型,依靠Petri網(wǎng)的理論就能夠分析和定為錯(cuò)誤。該程序的Petri網(wǎng)模型如圖1,當(dāng)庫(kù)所p8,p14,p15,p16同時(shí)都有標(biāo)記時(shí),Petri網(wǎng)中沒(méi)有一個(gè)變遷是可以引發(fā),即表示當(dāng)前狀態(tài)M是一個(gè)死標(biāo)識(shí),end庫(kù)所不獲得標(biāo)記,說(shuō)明程序不能正常結(jié)束。對(duì)應(yīng)的多線程的執(zhí)行過(guò)程是當(dāng)消費(fèi)最后一份可消費(fèi)的商品后要把t.available置為false,但在執(zhí)行t.available=false語(yǔ)句之前,消費(fèi)商品線程被中斷,系統(tǒng)執(zhí)行了商品生產(chǎn)線程,生產(chǎn)若干商品后,生產(chǎn)商品線程結(jié)束,再調(diào)用消費(fèi)商品線程并執(zhí)t.available=false語(yǔ)句,最終導(dǎo)致消費(fèi)商品線程判斷有商品可消費(fèi)但是t.available=false,消費(fèi)商品線程陷入死循環(huán),程序不能正確結(jié)束。

      這個(gè)時(shí)候?qū)е鲁绦虺鲥e(cuò)的原因已經(jīng)找到,只需要對(duì)消費(fèi)商品線程進(jìn)行同步即可,即使得消費(fèi)商品線程在執(zhí)行時(shí)可以獨(dú)占資源。

      圖1 程序的Petri網(wǎng)模型

      3 結(jié)束語(yǔ)

      本文通過(guò)抑止弧Petri網(wǎng)模型的運(yùn)行找到了"生產(chǎn)-消費(fèi)"程序中用普通方法難以發(fā)現(xiàn)的隱藏的錯(cuò)誤。而且通過(guò)引入抑止弧Petri網(wǎng)的行為分析找到了引發(fā)這個(gè)錯(cuò)誤的原因并提出了該進(jìn)的方法。

      [1]吳哲輝.Petri網(wǎng)導(dǎo)論[M].北京:機(jī)械工業(yè)出版社.

      [2]鄭莉.C#語(yǔ)言程序設(shè)計(jì)[M].清華大學(xué)出版社.

      猜你喜歡
      庫(kù)所線程錯(cuò)誤
      在錯(cuò)誤中成長(zhǎng)
      基于FPGA 的有色Petri 網(wǎng)仿真系統(tǒng)設(shè)計(jì)*
      電子器件(2021年1期)2021-03-23 09:24:02
      淺談linux多線程協(xié)作
      不犯同樣錯(cuò)誤
      利用Petri網(wǎng)特征結(jié)構(gòu)的故障診斷方法
      一種遞歸π演算向Petri網(wǎng)的轉(zhuǎn)換方法
      《錯(cuò)誤》:怎一個(gè)“美”字了得
      基于模糊Petri網(wǎng)的數(shù)控機(jī)床主軸故障診斷*
      Linux線程實(shí)現(xiàn)技術(shù)研究
      么移動(dòng)中間件線程池并發(fā)機(jī)制優(yōu)化改進(jìn)
      彝良县| 尼玛县| 如东县| 平远县| 山阳县| 兴和县| 神池县| 新余市| 美姑县| 工布江达县| 乌审旗| 敦化市| 泰宁县| 六安市| 平阴县| 潢川县| 长沙县| 海阳市| 霍州市| 神木县| 札达县| 云南省| 沧源| 化德县| 嘉义县| 苍溪县| 渭南市| 祁门县| 唐河县| 上犹县| 措美县| 时尚| 黄梅县| 荔波县| 绥德县| 富源县| 长沙市| 蚌埠市| 象山县| 休宁县| 康马县|