亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        淺談多線(xiàn)程安全

        2015-05-30 06:34:22孫明鵬胡飛胡長(zhǎng)春
        儷人·教師版 2015年15期
        關(guān)鍵詞:多線(xiàn)程安全編程

        孫明鵬 胡飛 胡長(zhǎng)春

        【摘要】多線(xiàn)程編程的基本概念存在于研究與開(kāi)發(fā)實(shí)驗(yàn)室中已有數(shù)十年之久。多線(xiàn)程的真正價(jià)值在語(yǔ)言設(shè)計(jì)的理論基礎(chǔ)和實(shí)戰(zhàn)細(xì)節(jié)上是顯而易見(jiàn)的,利用現(xiàn)代處理器和多處理器及其特點(diǎn),多線(xiàn)程可具有更好的性能。多線(xiàn)程的應(yīng)用最重要的問(wèn)題是線(xiàn)程安全,未解決和解決不完全的線(xiàn)程安全問(wèn)題,其導(dǎo)致的錯(cuò)誤很難發(fā)現(xiàn)且很難被調(diào)試,并且線(xiàn)程所導(dǎo)致的錯(cuò)誤所造成的損失是巨大且無(wú)可估量的。

        【關(guān)鍵詞】多線(xiàn)程 ?編程 ?安全

        一、什么是線(xiàn)程安全

        當(dāng)你的程序所在的進(jìn)程之中有多個(gè)線(xiàn)程在同時(shí)運(yùn)行,而這些線(xiàn)程可能會(huì)同時(shí)運(yùn)行一段代碼或者會(huì)同時(shí)訪(fǎng)問(wèn)一個(gè)對(duì)象,如果每次運(yùn)行這段代碼或?qū)?duì)象訪(fǎng)問(wèn)之后,所得到的結(jié)果和單線(xiàn)程情況下運(yùn)行結(jié)果一樣,而且其他的變量的值也和預(yù)期保持一致,我們就認(rèn)為是線(xiàn)程安全的。也就是說(shuō),當(dāng)多個(gè)線(xiàn)程同時(shí)運(yùn)行同一段代碼時(shí)不會(huì)造成資源的沖突,不會(huì)產(chǎn)生錯(cuò)誤的結(jié)果就是線(xiàn)程安全的。如過(guò)有一段線(xiàn)程安全的代碼,它在多個(gè)線(xiàn)程中使用時(shí)不需要做同步處理;而線(xiàn)程不安全的代碼在多線(xiàn)程環(huán)境中使用必須要做同步處理,否則將會(huì)出現(xiàn)不可預(yù)期的后果。

        二、線(xiàn)程不安全所造成的影響

        在不進(jìn)行數(shù)據(jù)保護(hù)操作時(shí),當(dāng)一段代碼或者對(duì)象可能被多個(gè)線(xiàn)程訪(fǎng)問(wèn),而且訪(fǎng)問(wèn)順序不能確定,那么一旦這段代碼或者對(duì)象處于有條件的線(xiàn)程安全,線(xiàn)程兼容,線(xiàn)程對(duì)立這一分類(lèi),就可能出現(xiàn)多個(gè)線(xiàn)程先后更改數(shù)據(jù),從而造成得到的數(shù)據(jù)不一致,或者數(shù)據(jù)出現(xiàn)污染,更嚴(yán)重的時(shí)候會(huì)出現(xiàn)臟數(shù)據(jù),甚至程序崩潰。線(xiàn)程不安全是可怕的,一方面它對(duì)于程序編寫(xiě)人員來(lái)說(shuō)是一場(chǎng)災(zāi)難,因?yàn)榫€(xiàn)程不安全導(dǎo)致的錯(cuò)誤會(huì)被程序復(fù)雜的邏輯掩蓋,它所造成的錯(cuò)誤與邏輯不嚴(yán)謹(jǐn)所造成的錯(cuò)誤基本上相似,這就為除錯(cuò)造成了困難,很多時(shí)候需要重新審視整個(gè)代碼,甚至很長(zhǎng)時(shí)間無(wú)法發(fā)現(xiàn)問(wèn)題所在。另一方面它對(duì)于程序的使用者造成的損失基本無(wú)法估計(jì),在當(dāng)下的數(shù)據(jù)時(shí)代,任何數(shù)據(jù)的不一致,數(shù)據(jù)的污染都會(huì)給一個(gè)公司和個(gè)人造成無(wú)法挽回的影響。

        三、線(xiàn)程不安全的分類(lèi)

        線(xiàn)程的安全程度并沒(méi)有一個(gè)統(tǒng)一的分類(lèi),在喬?!げ悸搴账o出線(xiàn)程分類(lèi)描述,線(xiàn)程安全性分為五類(lèi),分別是:不可變、線(xiàn)程安全、有條件線(xiàn)程安全、線(xiàn)程兼容和線(xiàn)程對(duì)立。當(dāng)然,若在明確的明白下線(xiàn)程安全特性的情況下,無(wú)論是否使用這種分類(lèi)系統(tǒng)都沒(méi)有關(guān)系。喬希·布洛赫所提出的分類(lèi)方法也有局限性,各個(gè)分類(lèi)之間的界限并不是絕對(duì)的明朗,但是作為對(duì)線(xiàn)程安全的分類(lèi),確是簡(jiǎn)單明了的。下面就各個(gè)類(lèi)別進(jìn)行詳細(xì)的說(shuō)明:

        1,不可變的

        不可變的對(duì)象一定是線(xiàn)程安全的,因?yàn)槠洳豢勺兊奶匦?,它永遠(yuǎn)也不需要進(jìn)行額外的同步操作。只要一個(gè)不可變的對(duì)象在構(gòu)建時(shí)候是正確的,那么永遠(yuǎn)也不會(huì)看到它處于不一致的狀態(tài)。再代碼中,基本類(lèi)型,基本數(shù)值類(lèi),字符常量都是不可變的。

        2,線(xiàn)程安全的

        所有線(xiàn)程安全的代碼或者對(duì)象都具有上面所提到的線(xiàn)程安全的屬性,也就是說(shuō),這段代碼或?qū)ο笤诙嗑€(xiàn)程環(huán)境下,被多個(gè)線(xiàn)程訪(fǎng)問(wèn),不管這些線(xiàn)程的訪(fǎng)問(wèn)順序是何種順序,所有訪(fǎng)問(wèn)的線(xiàn)程都不需要進(jìn)行額外的同步工作。這種線(xiàn)程安全的要求是嚴(yán)格的,滿(mǎn)足這種要求的和滿(mǎn)足不可變類(lèi)型的所有代碼或者對(duì)象都是絕對(duì)的線(xiàn)程安全。

        3,有條件的線(xiàn)程安全

        有條件的線(xiàn)程安全,指的是對(duì)于這段代碼或者對(duì)象僅僅在一些操作訪(fǎng)問(wèn)順序不同需要額外的同步操作。最顯著的有條件的線(xiàn)程安全是在遍歷一些返回迭代器對(duì)象的時(shí)候,如果在遍歷這些對(duì)象的同時(shí)存在另一個(gè)或多個(gè)線(xiàn)程進(jìn)行了添加或移除內(nèi)部元素的操作,必然會(huì)出現(xiàn)迭代器的失效。為了保證在某一線(xiàn)程在執(zhí)行遍歷操作的時(shí)候該對(duì)象不會(huì)被其他線(xiàn)程訪(fǎng)問(wèn),應(yīng)通過(guò)相應(yīng)的手段,阻止其他線(xiàn)程做出導(dǎo)致該對(duì)象的迭代器失效的操作。進(jìn)行迭代的線(xiàn)程應(yīng)該確保它是獨(dú)占性的訪(fǎng)問(wèn)該對(duì)象,從而保證了遍歷的完整性。

        4,線(xiàn)程兼容的

        線(xiàn)程兼容的代碼或者對(duì)象不是線(xiàn)程安全的,但是可以通過(guò)正常使用同步而在多線(xiàn)程環(huán)境下安全的使用。

        5,線(xiàn)程對(duì)立的

        線(xiàn)程對(duì)立是指一段代碼或者對(duì)象在運(yùn)行中,一旦存在多進(jìn)程對(duì)它進(jìn)行操作,總是不能保證線(xiàn)程安全的,這種不能保證不管是否進(jìn)行了同步的操作。線(xiàn)程對(duì)立是一種罕見(jiàn)且特殊的情況,例如當(dāng)一段代碼或?qū)ο笾械撵o態(tài)數(shù)據(jù)被修改之后,被修改的數(shù)據(jù)可能會(huì)影響到其他代碼或者其他對(duì)象的行為時(shí),這種時(shí)候就會(huì)出現(xiàn)線(xiàn)程對(duì)立。

        四、防范線(xiàn)程不安全影響的措施

        1.對(duì)于可能會(huì)運(yùn)行在多線(xiàn)程環(huán)境下的代碼和對(duì)象的編寫(xiě)人員,應(yīng)盡量的保證該代碼在多線(xiàn)程環(huán)境每次運(yùn)行結(jié)果和單線(xiàn)程情況下運(yùn)行結(jié)果一致,而且其他的變量和值也能和預(yù)期結(jié)果保持一致。這種情況從根本上保證了線(xiàn)程安全。

        2.對(duì)于可能會(huì)運(yùn)行在多線(xiàn)程環(huán)境下的代碼和對(duì)象的編寫(xiě)人員,在編寫(xiě)代碼和對(duì)象的時(shí)候,應(yīng)注意辨別是否能在多線(xiàn)程下正確運(yùn)行,根據(jù)上文提出的線(xiàn)程安全的分類(lèi),對(duì)于有條件的線(xiàn)程安全的,線(xiàn)程兼容的,線(xiàn)程對(duì)立的應(yīng)該給以相應(yīng)的標(biāo)記,或在文檔之中詳細(xì)的寫(xiě)出說(shuō)明。保證該代碼或者對(duì)象的潛在使用者能夠通過(guò)查看注釋或文檔,清楚明白的知道該代碼或?qū)ο笤诙嗑€(xiàn)程環(huán)境下的運(yùn)行狀態(tài)。

        3.對(duì)于某段代碼或者某個(gè)對(duì)象的使用者,在使用這段代碼或?qū)ο笾?,?yīng)該清楚的知道該代碼和對(duì)象是否是線(xiàn)程安全的,并且應(yīng)該清楚的知道接下來(lái)使用這段代碼或?qū)ο蟮倪\(yùn)行環(huán)境是否為多線(xiàn)程環(huán)境,根據(jù)不同的情況決定是否需要進(jìn)行線(xiàn)程間的同步,或者用互斥鎖等方法使得線(xiàn)程能夠有序的訪(fǎng)問(wèn)該代碼或?qū)ο蟆?/p>

        4.對(duì)于某段代碼或者某個(gè)對(duì)象的使用者,如果確定為多線(xiàn)程環(huán)境,且確定接下來(lái)使用的代碼或?qū)ο笥锌赡軙?huì)被多個(gè)線(xiàn)程訪(fǎng)問(wèn),并且無(wú)法確定其是否是線(xiàn)程安全的時(shí)候,應(yīng)盡量通過(guò)多種方式確定其線(xiàn)程安全與否,這些方式包括聯(lián)系作者或者通過(guò)自己的測(cè)試,以及查看源代碼。

        5.對(duì)于軟件設(shè)計(jì)者來(lái)說(shuō),當(dāng)程序不能按照設(shè)計(jì)運(yùn)行,應(yīng)當(dāng)在檢測(cè)邏輯錯(cuò)誤的同時(shí),檢測(cè)是否因?yàn)榫€(xiàn)程不安全而導(dǎo)致的錯(cuò)誤是必要的。依次檢查所使用別人代碼或別人提供的對(duì)象是否存在線(xiàn)程安全問(wèn)題是最為合適的。

        6.對(duì)于已經(jīng)發(fā)現(xiàn)因?yàn)榫€(xiàn)程安全問(wèn)題導(dǎo)致錯(cuò)誤的軟件使用者,應(yīng)及時(shí)停止使用該軟件,及時(shí)聯(lián)系軟件廠(chǎng)商,要求修改。

        參考文獻(xiàn):

        1 Lubomir F.Bic,Alan C.Shaw.操作系統(tǒng)原理[M].北京:清華大學(xué)出版社,2005

        2 安德魯斯.多線(xiàn)程,并行與分布式程序設(shè)計(jì)基礎(chǔ)(影印版)[M].北京:高等教育出版社,2002

        3 Bruce Eckel.Thinking in JAVA[M].London:Prentice Hall,2006

        猜你喜歡
        多線(xiàn)程安全編程
        我家有只編程貓
        我家有只編程貓
        我家有只編程貓
        我家有只編程貓
        Java并發(fā)工具包對(duì)并發(fā)編程的優(yōu)化
        基于多線(xiàn)程文件傳輸關(guān)鍵技術(shù)研究與實(shí)現(xiàn)
        網(wǎng)頁(yè)爬蟲(chóng)技術(shù)的關(guān)鍵技術(shù)研究探索
        一種基于多線(xiàn)程的高速磁盤(pán)鏡像算法
        亚洲国产色一区二区三区| 熟女少妇精品一区二区三区| 老熟妇Av| 欧美日韩一线| 亚洲成熟丰满熟妇高潮XXXXX| 日本五十路熟女在线视频| 午夜婷婷国产麻豆精品| 91快射视频在线观看| 国产毛片av一区二区| 亚洲a∨无码精品色午夜| 免费va国产高清大片在线| 国产白丝无码视频在线观看 | 国产成人精品aaaa视频一区| 插入中文字幕在线一区二区三区 | 中文字幕亚洲综合久久久| 亚洲第一区二区精品三区在线 | 18禁黄无遮挡免费网站| 国产亚洲精品一区二区在线播放| 日韩精品久久午夜夜伦鲁鲁| 国产亚洲精品熟女国产成人| 香港三级精品三级在线专区| 人妻妺妺窝人体色www聚色窝| 成人激情四射网| 大胸美女吃奶爽死视频| 国产熟女自拍av网站| 美女视频黄是免费| 国产精品成人aaaaa网站| 性久久久久久久| 久久精品国产热| 粉嫩av一区二区在线观看| 亚洲不卡av二区三区四区| 少妇高潮太爽了在线看| 无码欧美毛片一区二区三| 国产黄色免费网站| 国产亚洲精品性爱视频| 青青草好吊色在线视频| 亚洲精品一区三区三区在线| 日本动漫瀑乳h动漫啪啪免费 | 亚洲欧美日本人成在线观看| 国产精品黄色在线观看| 国产在线一区二区三区乱码|