• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    面向對象技術在軟件重用和體系結構中的應用(3)

    發布: 2007-5-25 11:48 | 作者: 田景成 | 來源: uml中國 | 查看: 33次 | 進入軟件測試論壇討論

    領測軟件測試網

    4 并發面向對象技術


      并行計算是未來計算機的發展方向。將面向對象與并行計算的相結合的并發面向對象技術是一個比較新的研究領域,許多問題有待解決。


      目前一些流行的面向對象程序設計語言(如C++)只提供了描述程序順序執行的能力;即使有些語言(如Smalltalk)提供了描述程序并發執行的機制,但往往采用一些傳統的并發控制模式和設施,沒有從對象模型本身的特點來考慮并發控制,從而造成并發與對象模型中一些概念(如封裝、繼承及自治等)相沖突。


      近年來,許多面向對象并發編程的方案被提出,可歸納為3種不同方法:


      1. 設計全新的并發面向對象語言;
      2. 擴展現存的順序面向對象語言;
      3. 使用現有的順序面向對象語言,通過外部庫提供并發抽象。


      并發類庫正成為并發面向對象技術中最為重要的方法。這種方法的優點是不需要修改原有順序面向對象語言,保留原有編程方法,可以更好地利用面向對象技術中的一些特性,用戶容易接受。


      為了在面向對象模型中引進并發機制,并發類庫的設計必須能與對象模型中一些現有的特性有機結合,為面向對象程序設計語言擴展描述系統并發行為的能力。此外,這種方法一般還需要某種底層特殊軟件(運行支撐系統)的支持,并將支撐系統的復雜性全部隱藏在類庫中。


      順序對象模型由一組被動的對象構成。系統的執行行為是,外界激活其某個對象的某個方法,該方法的執行中向系統中其他對象發送消息,從而激活這些對象的方法的執行。這里的消息發送就是過程調用,即消息發送者必須等到消息接受者的相應方法執行完畢,才能繼續執行下去,整個系統只有一個執行線程(Thread)。


      在面向對象的并發模型中,可并發執行的基本單位是對象,稱為并發對象。與普通對象不同的,并發對象具有自己的控制線索和獨立的地址空間,多個并發對象可以并發運行,通過方法(消息傳遞)請求相互作用。目前存在兩種構造并發對象的典型方案:


      1. 采用異步消息發送。即一個對象向另一個對象發送消息后,前者不必等待后者處理消息即可繼續執行下去,后者則對消息進行緩存;


      2. 對象可以有一個體(Body),一旦對象被創建,這個體就開始執行。


      在方案1中,由異步消息發送產生新的執行線程,從而引起系統的并發。由于采用異步消息發送,必須提供今后如何取得返回值的設施。異步消息發送的不足之處在于:它使得程序的行為難以把握,不利于對程序的推理(Reasoning)。


      方案2通過創建新對象產生新的執行線程,在對象體執行的同時,對象還可以接收和發送消息,消息發送可采用同步方式,但應允許對象內部的并發,否則容易造成死鎖。


       處于并發環境中的對象,隨時都會面臨環境對其方法的并發調用。為了保證對象狀態的一致性與完整性,必須對方法的并發調用加以同步控制。同步控制可以由消息發送者執行,也可以由消息接受者執行。但是,若同步控制僅由消息發送者執行,當消息發送者由于種種原因沒有進行同步控制時,將會產生對消息接受者方法的并發調用,造成消息接受者內部狀態的不一致與不完整。因此,消息接受者本身必須提供同步控制。


      并發對象的同步控制可以分成兩類:條件同步和互斥。條件同步是指對象在某種狀態下只能接受某些消息;互斥是指當處于某種狀態下的對象可以接受(處理)多個消息時,由于這些消息的處理都有可能使用對象的成員變量,如果讓它們同時執行,就存在共享對象的成員變量問題,為了保證對象狀態的完整性和一致性,這些方法必須互斥地使用共享變量。


      如何在并發對象類中描述對象的同步控制,一般存在兩種方式:集中控制和分散控制。


      集中控制方式是把對象的同步控制放在對象(類)中某一個地方集中進行描述。這種方式要求設計者必須對對象的并發行為有整體的了解,還有可能帶來繼承異常,即在定義子類時,必須對父類的同步控制描述進行重定義,才能把新定義的方法考慮進來。


      分散控制方式是把對象的并發控制描述分布到對象的各方法上。其中一種方案是在對象各方法的實現中進行同步控制,對象無條件地接收消息,在消息的處理方法中,根據對象目前的狀態決定是等待還是繼續執行。這種方案的不足之處在于:被掛起的方法往往使得對象處于一種不穩定狀態,使得對象此時不適合于處理其他消息;并且當在子類中改變父類某方法的同步控制時,需對整個方法重定義。另一種方案是在對象類中給每個方法加一個激勵條件,當對象接收到消息時,將根據相應方法的激勵條件來決定是否處理該消息,對不滿足激勵條件的消息讓其等待。這種方案優于前一種方案,因為,當定義子類時可以對父類中各方法的激勵條件和方法的實現分開進行繼承,從而避免了不必要的重定義。


    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>