專利名稱:用于構(gòu)造分布式軟件成分的方法
隨著計算機和通信網(wǎng)絡(luò)的日益增加的使用,計算設(shè)備正變得越來越多的互連。此外,越來越多的例如音頻與視頻設(shè)備、家用(移動)電話等等的設(shè)備都包含用于運行軟件的計算裝置。這些設(shè)備也往往連接到通信網(wǎng)絡(luò)。為了使軟件能夠與運行在相同設(shè)備上的其它軟件進行通信、或者通過通信網(wǎng)絡(luò)與運行在另一設(shè)備上的其它軟件進行通信,必須定義軟件通信的方式。過去曾設(shè)計過許多定義這種通信的方式。軟件通信具有如此多樣方式的一個原因是運行軟件的設(shè)備的所述多樣性源自于眾多產(chǎn)業(yè)。
甚至在計算的產(chǎn)業(yè)內(nèi),也已開發(fā)出各種各樣的軟件之間通信的方式??紤]到來自上述其他產(chǎn)業(yè)的設(shè)備(例如,家用設(shè)備,電信設(shè)備等等)也具有它們自己的軟件通信方式的歷史,因此為了創(chuàng)建用于在設(shè)備之間通信的工作系統(tǒng)而已經(jīng)開發(fā)出許多特殊的專用方案并不令人驚奇。這種開發(fā)的結(jié)果是在現(xiàn)有技術(shù)的設(shè)備中使用的兩種或更多種軟件成分不太可能正確地進行通信。為了克服此軟件問題,每當(dāng)兩個或更多軟件成分需要相互通信時,就創(chuàng)建補丁程序(patch)。但開發(fā)這種特殊的專用補丁程序是非常昂貴的。
為了克服這種缺陷,本發(fā)明提供了一種方法,用于在運行于一個或多個計算設(shè)備上的兩個或多個程序線程(thread)之間交換數(shù)據(jù),每個所述計算設(shè)備都包括一個處理器和至少若干存儲器,所述方法包括以下步驟-所述程序線程之中的第一程序線程執(zhí)行用于定義所述線程之間關(guān)系的契約(contractual)軟件成分;-根據(jù)所定義的所述契約軟件成分的關(guān)系,所述第一程序線程以及一個或多個第二程序線程各自創(chuàng)建各自的契約軟件對象。
這些契約軟件對象(共同客戶(co-client))與該關(guān)系(初始共同對象(initialco-object))可以駐留在一個或多個設(shè)備中,并且用作一個單邏輯實體。其優(yōu)點是使用這種成分使軟件能夠在標(biāo)準(zhǔn)聯(lián)網(wǎng)和/通信技術(shù)之上的高層上通信。第二個優(yōu)點是,對于相互通信的軟件,可以使用現(xiàn)存的網(wǎng)絡(luò)和網(wǎng)絡(luò)軟件,其中該軟件的分布式共同對象可在這些網(wǎng)絡(luò)和網(wǎng)絡(luò)軟件之上操作。
本發(fā)明的另一個優(yōu)點是,為了軟件使用這種對每個程序線程都以相同方式工作的分布式成分進行通信,不再需要為了這些線程能夠通信而編寫特殊的代碼。在選擇某一任務(wù)之后,該分布式成分將按照任務(wù)功能而運行,這將在以下的
中進行解釋。
此外,當(dāng)前發(fā)明提供一種控制網(wǎng)絡(luò)業(yè)務(wù)的系統(tǒng)方式(往返控制(round tripcontrol))。利用這種方法,不需要引入專用接口,就可以依據(jù)網(wǎng)絡(luò)等待時間和分布程度對分布式軟件成分的實現(xiàn)進行最優(yōu)化。為了對軟件成分在網(wǎng)絡(luò)中的分布實現(xiàn)進行最優(yōu)化,可以考慮使用網(wǎng)絡(luò)拓?fù)浼夹g(shù),而無需調(diào)整任何接口。
此方法的另一優(yōu)點是,分布式成分的行為與其分布程度無關(guān)。雖然在性能級別上總會有一定差異,但使用根據(jù)本發(fā)明的方法能夠完全預(yù)測在程序線程之間執(zhí)行通信的方式。
在本發(fā)明的優(yōu)選實施例中,所定義的所述線程之間的關(guān)系是契約軟件成分的一種例示(初始共同對象)。一個或多個契約軟件對象(共同客戶)與(一組)定義的多個線程之間的關(guān)系一起作為一個整體(共同成分(co-component))是由程序線程用于創(chuàng)建共同客戶的一個軟件成分。該關(guān)系定義了程序線程必須如何創(chuàng)建一共同客戶作為程序空間或程序線程的域中運行的共同客戶。
在本發(fā)明的另一優(yōu)選實施例中,對于每個程序線程,都利用上述方法來創(chuàng)建一個契約軟件對象(共同客戶),以便通過分配為了創(chuàng)建和操作所述共同客戶而所需的裝置(means)來交換數(shù)據(jù)。
該初始的共同對象是程序線程為了使用一共同對象與其他的程序線程交換數(shù)據(jù)而必須同意負(fù)擔(dān)其費用(underwrite)的契約項(term)的一個定義。一個契約識別任務(wù)。若一個程序線程需要使用這樣的任務(wù),則該程序線程可以對那個任務(wù)“簽名(sign)”。任務(wù)暗指“權(quán)利”和“義務(wù)”。這些權(quán)利和義務(wù)包括用于創(chuàng)建和操作共同客戶的裝置的分配。
程序線程將必須預(yù)留用于使用共同客戶所需的裝置。為此預(yù)留的裝置的規(guī)范由初始共同對象中的共同對象來設(shè)計。若一個程序線程需要使用分布式軟件成分,則它將負(fù)擔(dān)所謂的契約的費用,其結(jié)果是根據(jù)其客戶被簽名的任務(wù)的規(guī)范來創(chuàng)建一共同客戶。
在本發(fā)明的另一優(yōu)選實施例中,該分布式共同對象是單邏輯對象。
此外,最好一個程序線程對第一契約軟件對象進行本地操作,以便利用第二線程的第二契約軟件對象向第二線程傳送數(shù)據(jù)。其優(yōu)點是,由于共同客戶在該線程內(nèi)本地運行,因此為了一個線程與其他線程通信,該線程只需利用其共同客戶執(zhí)行內(nèi)部操作。在該線程已經(jīng)將需要通信的數(shù)據(jù)內(nèi)部傳送到該共同客戶之后,該分布式對象將在“提交”之后處理該數(shù)據(jù)至其他線程的通信,這將在以下的
中進行解釋。
進一步優(yōu)選地,在所述第一共同客戶的提交操作之后,對所述單邏輯對象的所述第一契約軟件對象的本地操作變?yōu)槿中缘?global)。當(dāng)一個共同客戶通過所述內(nèi)部操作已從其主機線程接收到數(shù)據(jù)時,該數(shù)據(jù)仍然被本地存儲。為了目標(biāo)(target)共同客戶接收數(shù)據(jù),其中所述目標(biāo)共同客戶是在需要接收該通信的其他線程內(nèi)運行的共同客戶,第一共同客戶必須執(zhí)行一個提交操作。利用由該共同客戶為其一部分的共同對象所運行的此操作,通知這些目標(biāo)共同客戶它們將接收數(shù)據(jù)。優(yōu)點是由共同對象以可被其他的共同客戶理解的方式來執(zhí)行該全局性操作,因為包括多個共同客戶的共同對象形成單邏輯對象。
而且優(yōu)選地,所述單邏輯對象的所述第一契約軟件對象的全局性操作通過由第二契約軟件對象調(diào)用一個同步操作來對所述第二契約軟件對象實施。其優(yōu)點是,在所述第一共同客戶的提交操作之后變?yōu)槿中缘臄?shù)據(jù)將在第二共同客戶正運行在其中的程序線程內(nèi)變?yōu)楸镜氐?。此后,該通信所針對的第二線程可以通過內(nèi)部操作存取該數(shù)據(jù)。因此,顯然,在該通信的接收端上,該同步操作也是該共同對象的操作,這意味著接收該數(shù)據(jù)的線程為了存取該數(shù)據(jù)而不需要執(zhí)行全局性操作。接收線程只需對其共同客戶執(zhí)行一個本地操作。
與本申請相同的申請人的美國專利US 6182152(代理公司案號PHN015645)公開了使用進程內(nèi)(intraproces)更新操作和進程間(inter-proces)適應(yīng)操作來同步并行的順序處理。在該文件中描述了用于多個處理器的同步方法,其中這些處理器是利用“信道”相互連接的。這些“信道”包括三個部分對發(fā)送器來說是本地的一個部分,對于接收器來說為本地的一個部分,和一個全局性部分。在此文件中,“COMMIT”操作自動執(zhí)行一個進程的所有待定(pending)更新?!癝YNC2”操作執(zhí)行一個進程的所有待定適應(yīng)操作。當(dāng)所有處理器都是同一設(shè)備的部件并使用共享存儲器時,可以執(zhí)行根據(jù)此文件的方法。
另一優(yōu)選實施例提供了一種用于執(zhí)行根據(jù)本發(fā)明方法的計算機系統(tǒng),該計算機系統(tǒng)包括至少一個計算設(shè)備,該計算設(shè)備具有至少一個處理器和一個存儲器,運行需要交換信息的至少兩個并行的程序線程。
在共同待審的歐洲專利申請?zhí)栂盗衝o.01204140.6(代理公司案號PHNL010784)中,公開了一種通信協(xié)議,該通信協(xié)議不依賴于分布式成分的分布程度而能夠使計算有可能保持一致性。利用這種保證順序一種性的方法可以使共同工作的處理器獨立于通信中的延遲而起作用。
本發(fā)明的其他優(yōu)點、特征和細(xì)節(jié)將參照結(jié)合附圖的以下對其優(yōu)選實施例的描述來解釋,所述附圖示出一個優(yōu)選實施例的示意圖。
根據(jù)本發(fā)明的共同對象表示為矩形10。共同對象10包括一個初始共同對象5和四個共同客戶11,12,13,14。初始共同對象5是利用軟件成分6根據(jù)來自一個程序線程的如此做的請求而被創(chuàng)建的。當(dāng)一個程序線程需要與至少一個其他程序線程交換數(shù)據(jù)時,一個共同客戶被創(chuàng)建為共同對象10的一個邏輯部分,其中該程序線程是運行在計算設(shè)備(未示出)上的軟件。
一個共同對象是一個邏輯實體,其中創(chuàng)建運行在各個程序線程(進程)1,2,3,4中的共同客戶。這些共同對象和共同客戶能夠以下述方式在線程之間進行數(shù)據(jù)通信,該方式即是這些線程可以在其各自的進程內(nèi)將數(shù)據(jù)移交給共同客戶。從發(fā)送進程中一個共同客戶到接收進程中另一共同客戶(即,從進程1中的共同客戶1到進程2中的共同客戶2)的數(shù)據(jù)的實際發(fā)送是在發(fā)送進程的范圍之外完成的,并因此由共同對象來處理。該共同對象負(fù)責(zé)涉及全局級別上的數(shù)據(jù)傳輸?shù)乃胁僮鳌?br>
當(dāng)進程1需要將信息發(fā)送到另一進程2時,該進程利用共同對象來創(chuàng)建一個共同客戶。為了能夠創(chuàng)建共同客戶,該進程需要從初始共同對象讀取涉及如何執(zhí)行的數(shù)據(jù)。該初始共同對象包括有關(guān)為了操作該共同客戶而需要預(yù)留的資源類型和處理容量的信息。根據(jù)此信息,該進程就可以創(chuàng)建共同客戶。這樣創(chuàng)建的共同客戶將在進程1的資源內(nèi)運行,并將在邏輯上成為該共同對象的一部分。同樣在進程2中將以類似的方式創(chuàng)建一個共同客戶。一個進程需要將被執(zhí)行的特定功能。這些功能的組合被稱為任務(wù)。因此,將從初始共同對象讀出的數(shù)據(jù)或該契約軟件成分的例示使該進程可以創(chuàng)建能夠完成該任務(wù)的共同客戶。
共同成分是一種軟件成分,其能夠?qū)崿F(xiàn)為一個COM成分,所述COM成分包含特定類別的共同對象的實現(xiàn)。一個共同對象是通過以與該類別的對象相同的方式創(chuàng)建一個初始共同對象來創(chuàng)建的。如果使用COM,則該創(chuàng)建是利用“CoCreateInstance”來完成的。實際上,共同對象可以被看作是契約,這意味著客戶可以動態(tài)地為一個契約中識別的一個特定任務(wù)簽名,并且這意味著客戶不僅得到了權(quán)利還得到與該任務(wù)相關(guān)的義務(wù)。
因此,對COM成分來說,需要具有一個準(zhǔn)確的規(guī)范來識別任務(wù)及其相關(guān)的權(quán)利和義務(wù)。該規(guī)范識別與任務(wù)相關(guān)的幾個接口。根據(jù)COM,最好該規(guī)范利用被稱為契約ID的Globally Unique ID(全局唯一ID)(GUID)來識別,而不是給該契約中規(guī)定的每個接口分配一個單獨的GUID。
共同成分的一個例子是“事件協(xié)調(diào)器(Event Mediator)”。此事件協(xié)調(diào)器共同對象提供設(shè)施來動態(tài)連接和斷開事件源和事件匯點(sink)。通常,某些事件源和匯點將駐留在同一機器上,而其他事件源和匯點將被分配到不同機器上。
對于事件協(xié)調(diào)器,區(qū)分三種不同的任務(wù)?!笆录l(fā)送器”是事件源的所有者。它能夠作為特定類型事件的事件源連接到事件協(xié)調(diào)器和從事件協(xié)調(diào)器中斷開。在連接之后,它可以向事件協(xié)調(diào)器報告該事件的出現(xiàn)。
“事件接收器”是“事件匯點”的所有者。它能夠作為特定類型事件的事件匯點連接到事件協(xié)調(diào)器和從事件協(xié)調(diào)器中斷開。當(dāng)連接時,事件接收器應(yīng)當(dāng)對于事件類型規(guī)定一個事件處理器。其效果是在事件發(fā)送器的源處出現(xiàn)的事件被傳播到事件接收器的匯點(假定發(fā)送器“提交”和接收器“同步”)。第三任務(wù)是“事件查詢器”,能夠向該事件協(xié)調(diào)器查詢所注冊的源的數(shù)目和給定事件類型的匯點。應(yīng)注意這只是一個簡化的例子。實際的事件協(xié)調(diào)器將必須具有更多的特征。
初始共同對象5將根據(jù)本發(fā)明按照以成分技術(shù)創(chuàng)建對象或編程語言的標(biāo)準(zhǔn)方式來創(chuàng)建。一個共同對象初始只包括初始共同對象,這解釋名稱“初始共同對象”。只要共同對象存在,該初始共同對象也將持續(xù)存在,并使用其識別符作為該共同對象的識別符。該對象包括至少一個接口“ICoSign”8,用于使程序線程或處理器能夠?qū)σ粋€特定任務(wù)簽名。對任務(wù)的簽名將在進程或客戶的域中創(chuàng)建一個共同客戶。一個共同對象可以具有該共同對象專用的附加接口。
如上所述,IcoSign8的目的是用于這些共同對象的潛在客戶在一個特定任務(wù)中與該共同對象進行交互作用??蛻舯匦鑼υ撊蝿?wù)簽名,這意味著該客戶將必須承擔(dān)與該任務(wù)相關(guān)的所有義務(wù)。作為回報,該客戶可得到該共同對象的服務(wù)。這些任務(wù)是通過任務(wù)ID來指定的。在客戶域中分別簽名和創(chuàng)建共同客戶之后,該共同客戶的索引被返回到該客戶。簽名也可能失敗,如由簽名操作的返回值所指示的。例如,可能具有只有一個客戶可以簽名的任務(wù)。IcoSign僅支持任務(wù)的“簽約(signing up)”而不支持“簽退(signing off)”。這并不意味著不能取消(由共同對象來表示的)契約。若一個契約能夠被取消,這應(yīng)當(dāng)被規(guī)定為該契約本身的一部分并應(yīng)當(dāng)由共同客戶的任務(wù)專用接口來支持。此外,該共同客戶只能由簽名客戶使用。共同對象將共同客戶的調(diào)用方法解釋為來自該客戶,這意味著,由該共同對象使用該共同客戶來識別該客戶。
共同客戶是一種客戶端對象,具有為標(biāo)準(zhǔn)的交互接口31,32,33,34的固定接口組和專用于與該共同客戶相關(guān)的任務(wù)的接口集合21,22,23,24。
當(dāng)對一特定任務(wù)簽約時,該客戶得到對于該任務(wù)的共同客戶的專用拷貝。該共同客戶的任務(wù)專用接口提供對于與該任務(wù)相關(guān)的功能的接入。由這些任務(wù)專用接口所提供的操作的效果對于該客戶的進程域來說是嚴(yán)格本地的。
共同客戶上操作的本地效果利用交互接口可以轉(zhuǎn)變?yōu)閷餐瑢ο蟮娜中孕Ч?。其他客戶對該共同對象的全局性效果通過此接口也可以被轉(zhuǎn)變?yōu)樵摴餐蛻舻谋镜匦Ч?br>
應(yīng)當(dāng)注意,一個共同對象所支持的一組任務(wù)與一個共同客戶相關(guān)聯(lián)的該組接口相對比可以動態(tài)改變。
術(shù)語“客戶”是一個通用術(shù)語,用于表示作為程序線程的共同對象的用戶??蛻糁煌ㄟ^共同客戶的接口來與該共同對象交互作用。對于一個客戶所運用的特定任務(wù)的共同客戶是在該客戶的進程域中被創(chuàng)建的,這意味著與該客戶在相同的地址空間中。
注意術(shù)語“客戶”是一個通用概念,實際上可以是進程、線程、對象、對象組等等。
事件接收器共同客戶的任務(wù)專用接口的一個例子是如可以利用COM IDL規(guī)定的“IEventReceiverConnect”IEventReceiverConnect{void connect([in]EventID id,[in]EventHandler hdl
);void disconnect([in]EventID id);}此接口允許客戶通過指定事件ID和事件處理器來作為事件接收器進行連接和斷開。連接操作的效果是客戶將被注冊為利用該事件ID識別的事件類型的接收器。如果對此類型事件注冊發(fā)送器,則由這些發(fā)送器引起的任何事件都將被傳播到共同客戶。
除了處理事件的操作之外,事件處理器接口還可提供兩種操作來處理該客戶的連接和斷開。這樣做的原因是連接和斷開是異步的。共同對象通過調(diào)用相應(yīng)的事件處理器操作來確認(rèn)連接和斷開。
而且,所有其他的任務(wù)專用操作,例如連接和斷開操作,需要在其在共同對象級別上具有效果之前被提交。
由每個共同客戶提供的交互接口都是控制程序線程之間網(wǎng)絡(luò)業(yè)務(wù)密度的主要裝置,其中這些程序線程使用該共同對象來交換信息。一個客戶對共同客戶的每個任務(wù)專用操作對于該客戶的進程域是嚴(yán)格本地的而不涉及任何網(wǎng)絡(luò)業(yè)務(wù),這是本發(fā)明的一個巨大優(yōu)點。對共同對象操作的全局性效果只在該客戶已經(jīng)執(zhí)行了共同客戶的一個“提交”操作后才實現(xiàn)。此效果的實際情況應(yīng)當(dāng)通過閱讀該共同對象的說明而獲知。
提交對共同對象具有全局性效果,但對于使用該共同對象的其他客戶沒有此效果。這樣做的優(yōu)點是,可以通過一個線程來發(fā)送數(shù)據(jù)而不會影響其他的線程。為了使其他客戶也獲得提交操作的效果,一個客戶必須對該共同客戶調(diào)用同步操作,這將會在該共同客戶(并且僅是該共同客戶)中產(chǎn)生一個效果。根據(jù)本發(fā)明的方法的使用可以使交互作用在精確定義的時刻進行,這最優(yōu)化網(wǎng)絡(luò)業(yè)務(wù)。
能夠利用COM規(guī)定發(fā)送器如何能夠發(fā)送兩種類型的事件“鍵盤事件”和“鼠標(biāo)事件”的示例Action by receiver(接收器的動作)(1)eventReceiver.connect(keybdEventID,eventHandler);(2)eventReceiver.connect(mouseEventID,eventHandler);(3)commit();
(4)...actionsbysender...
(5)sync()(6)-eventHandler.handleConnect(keybdEventID);(7)-eventHandler.handleConnect(mouseEventID);(8)-eventHandler.handleEvent(keybdEventID,shiftKey);(9)-eventHandler.handleEvent(keybdEventID,ctrlKey);(10)-eventHandler.handleEvent(mouseEventID,clickLeft);初始地,發(fā)送器必須通過調(diào)用共同客戶“coEventSender”的相應(yīng)“連接”操作連接為鍵盤和鼠標(biāo)事件的發(fā)送器。
通過調(diào)用“提交”,將這些命令傳播到共同對象,這將使該客戶能夠作為這兩種類型事件的發(fā)送器。從該時刻開始,共同對象將發(fā)送器引起的這些類型的事件傳送到這些類型事件的接收器。
發(fā)送器引起三種事件“shiftKey”,“ctrlKey”和“clickLeft”?!皉aiseEvent”操作只對發(fā)送器共同客戶具有本地效果?!疤峤弧睂⒔⑦@些操作的全局性效果。
另一個例子示出了接收器如何能夠接收利用COM規(guī)定的事件Action by sender(發(fā)送器的動作)(1)CoEventSender.connect(keybdEventID);(2)CoEventSender.connect(mouseEventID);(3)Commit();(4)...
(5)CoEventSender.raiseEvent(keybdEventID,shiftKey);(6)CoEventSender.raiseEvent(keybdEventID,ctrlKey);(7)CoEventSender.raiseEvent(keybdEventID,clickLeft);(8)Commit();初始地,接收器必須作為鍵盤和鼠標(biāo)事件的接收器而連接?!疤峤弧庇糜谌中缘貍魉瓦@些命令。
響應(yīng)于這兩個操作,共同對象將向接收器發(fā)送確認(rèn),使接收器得知,從那時起它就能夠期待鍵盤和鼠標(biāo)事件的到來。
當(dāng)發(fā)送器引起一個事件時,在連接之后立即,如上所述,在執(zhí)行“同步”之后,接收器將接收三種事件兩個連接事件,兩個鍵盤事件和一個鼠標(biāo)事件。這些事件通過調(diào)用對應(yīng)的事件處理器在接收器一側(cè)被引起(作為“同步”的一部分)。
此外,能夠增加附加接口。這些接口被稱為共同客戶的“IcoConnect”接口和客戶的“IcoSignal”接口。
共同客戶的“IcoConnect”接口允許客戶預(yù)訂(“連接”)共同客戶的通知,該通知報告一個共同客戶“不同步”。在預(yù)訂此接口中,該客戶必須提供“IcoSignal”回調(diào)接口,該接口由共同客戶用于向該客戶“傳送”不同步事件。該客戶可以通過從該共同客戶中“斷開”來停止該通知。
可以在一個進程內(nèi)對多組共同客戶定義多個交互作用操作符,例如,個體共同客戶、在個體共同對象內(nèi)的一組共同客戶、或在一組共同對象內(nèi)的多個共同客戶和/或在所有共同對象內(nèi)的所有共同客戶。原始交互作用操作符,例如關(guān)于個體共同客戶的“提交”和“同步”,可以組合到更多的紋理粗糙(coarse-grained)的交互作用操作符,這些交互作用操作符對同一共同對象的多組共同客戶、來自不同共同對象的多組共同客戶或甚至在某個進程域中的所有共同客戶進行操作。
在一個進程中對所有的共同客戶進行操作的其它交互作用操作符包括“提交”、“同步”、“等待”、“下一個”和“等待中(await)(條件)”。這些都是在進程級別上(即,在一個進程中對所有共同客戶同時)操作的復(fù)合交互作用操作符的例子?!疤峤弧辈僮鞣麑λ械墓餐蛻魣?zhí)行“提交”(實際上,它僅執(zhí)行“待定”“提交”)?!巴健辈僮鞣麑Σ煌降乃泄餐蛻舳紙?zhí)行“同步”?!暗却辈僮鞣麍?zhí)行等待,直到一個共同客戶不同步為止?!跋乱粋€”操作符執(zhí)行“提交”,其后跟隨著“同步”?!暗却?c)”執(zhí)行等待,直到條件C成為真。
若共同客戶和共同對象駐留在同一進程中或同一機器上,則當(dāng)共同客戶之間的通信不需要經(jīng)過共同對象而可以被短接時,可以使用“提交”-“同步”機制的共享存儲器實現(xiàn)。在特定任務(wù)中第一次的簽約通常將意味著下載共同客戶代碼。
權(quán)利要求
1.用于在運行于一個或多個計算設(shè)備上的兩個或多個程序線程之間交換數(shù)據(jù)的一種方法,每個所述計算設(shè)備都包括一個處理器和至少若干存儲器,所述方法包括以下步驟-所述程序線程之中的第一程序線程執(zhí)行用于定義所述線程之間關(guān)系的一個契約軟件成分;-根據(jù)所定義的所述契約軟件成分的關(guān)系,所述第一程序線程以及一個或多個第二程序線程各自創(chuàng)建各自的契約軟件對象。
2.如權(quán)利要求1所述的方法,其中所定義的所述線程之間的關(guān)系是該契約軟件成分的一種例示。
3.如權(quán)利要求1所述的方法,其中對于每個程序線程,創(chuàng)建一個契約軟件對象。
4.如權(quán)利要求1所述的方法,其中通過分配創(chuàng)建和操作一個契約軟件對象所必需的裝置,利用該用于交換數(shù)據(jù)的方法來為每個線程創(chuàng)建契約軟件對象。
5.如權(quán)利要求1所述的方法,其中該契約軟件對象和所述線程之間的關(guān)系是單邏輯對象。
6.如權(quán)利要求1所述的方法,其中一個程序線程對第一契約軟件對象本地操作,以便利用第二線程的第二契約軟件對象來傳送數(shù)據(jù)給所述第二線程。
7.如權(quán)利要求1所述的方法,其中所述單邏輯對象的所述第一契約軟件對象的本地操作在所述第一契約軟件對象的提交操作之后變成全局性的。
8.如權(quán)利要求1所述的方法,其中通過利用所述第二契約軟件對象調(diào)用一個同步操作,對第二契約軟件對象實施所述單邏輯對象的所述第一契約軟件對象的全局性操作。
9.一種計算機系統(tǒng),包括至少一個計算設(shè)備,所述計算設(shè)備具有至少一個處理器和一個存儲器,運行需要交換信息的至少兩個并行程序線程,用于執(zhí)行根據(jù)權(quán)利要求1所述的方法。
10.一種計算機程序,用于使一個處理器執(zhí)行權(quán)利要求1的方法。
全文摘要
一種用于在運行于一個或多個計算設(shè)備上的兩個或多個程序線程之間交換數(shù)據(jù)的方法,每個所述計算設(shè)備都包括處理器和至少若干存儲器,所述方法包括以下步驟所述程序線程之中的第一程序線程執(zhí)行用于定義所述線程之間關(guān)系的一個契約軟件成分;根據(jù)所定義的所述契約軟件成分的關(guān)系,所述第一程序線程以及一個或多個第二程序線程的每一個都創(chuàng)建各自的契約軟件對象。
文檔編號G06F9/44GK1630853SQ02821557
公開日2005年6月22日 申請日期2002年10月3日 優(yōu)先權(quán)日2001年10月30日
發(fā)明者H·B·M·喬克斯 申請人:皇家飛利浦電子股份有限公司