精華區beta Programming 關於我們 聯絡資訊
> ==>發信人: previewslave@kkcity.com.tw (), 信區: programming > ※ 引述《Wiseman.bbs@bbs.cs.nthu.edu.tw》之銘言: > > ※ 引述《tester.bbs@bbs.csie.ncu.edu.tw (try or test)》之銘言: > > > 程式都有必須前後相依的 sequential 成份, 也有與前後次序無關可併 > > > 行的成份. 一般的命令式(imperative)程式語言除了 CHLL 以外, 通常 > > > 都把這些都當成必須前後有序的處理, 也就不介意 data 的隔離. > > > 可是 OOPL 會把有關的 data 與 method 擺到同一個 class object, > > > 跟前後次序相依的就會歸類為同一 class , 彼此不相關的 data 與 > > > method 通常就可以另成一個 class object. 所以 object 間的相依性 > > > 降低, 可以併行處理的可能性就增高. > > 太玄了 根本看不懂 > > 有沒有人可以幫忙翻譯一下 . > 簡單來講,就是 OOD 可以稍微將 需要循序處理之變數的相依關係 先來個概述。 > 不過就這樣聽起來的話,編譯器好像越來越難開發了,配合超緒執行的處理器來說。 假設程式的處理過程如下: S1. input (a,b); concurrent_begin S2. r1 <- C1(x:=a); S3. r2 <- C2(y:=b); S4. r3 <- C3(p:=a, q:=b); concurrent_end S5. r4 <- C4(x1:=r1, x2:=r2, x3:=r3) ; S6. output(z:=r4); 這個例子 C1(x) , C2(y) , C3(p,q) 彼此是無關的, 所以 S2, S3, S4, 不必循序, 是可以併行的. 執行序是 S4 S2 S3 或 S2 S4 S3 都不影響結果, 所以做了 concurrent begin 與 end 的聲明或註解. 假如, C1(x) , C2(y) , C3(p,q) 是非常耗時的處理計算, 又是 class object 的形式, 那麼獨立無關的 C1 C2 C3 做為 distributed object 就很自然能配合 多機運算. 假如叫用 C4 是用訊息傳送 r1, r2, r3 帶入, 再將結果用訊息傳送帶回給 r4, 當 r1 , r2 , r3 無法同時一起得到結果時, 進一步假設這個訊息傳送機制會等 候 instance data 齊全才會叫用 C4 , 此時的訊息傳送機制就能省略 "concurrent_end" 的聲告, 依然正確運作. -- ◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234