您好,登錄后才能下訂單哦!
這篇文章主要介紹EA畫UML時序圖中如何實現同步/異步,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
消息是從一個對象的生命線指向另一個對象的生命線的實線箭頭。
聽起來好像很簡單,但如果打開了消息的屬性對話框,就會知道根本就不是那么回事,對話框的內容很多,我們首先關注下圖紅圈中的內容。
同步調用
Synch項目選中【Synchronous】以后,Kind項目就固定為【Call】,這時消息就被指定為同步調用方式。具體看下面的例子:
同步調用消息表示為封閉填充實線箭頭,它的含義為SynchronousClient調用SynchronousServer的sendMessage方法,sendMessage調用內部處理以后,將結果返回給SynchronousClient。同步調用說起來高大上,實際就是最常見的函數調用。
上圖虛線分叉箭頭表示返回值,它的設定方法很簡單,只要選中消息屬性對話框籃圈中的【Is Ret...】項目即可。
異步調用
Synch項目選中【Asynchronous】,Kind項目選中【Call】以后,被選中的消息就被指定為異步調用方式。具體看下面的例子:
異步調用消息表示為分叉實線箭頭,它的含義是AsynchronousClient調用AsynchronousServer的postMessage方法時,不等待對應處理結束就直接返回,而對應處理由另外的控制流啟動,任務完成后再將結果以異步方式通知給AsynchronousClient。異步調用的執行說明雖然是連續的,但那只是語義上的連續。
異步信號
Synch項目選中【Asynchronous】,Kind項目選中【Signal】以后,被選中
的消息就被指定為異步信號方式。具體看下面的例子:
異步信號消息和異步調用消息一樣,表示為分叉實線箭頭,它表明:上圖中SignalActivation并不是SignalServer的方法,SignalClient在SignalActivation中做的就是激活信號,并不會關注有誰在等待信號,也不會關注處理是否結束。SignalServer等待信號被激活后執行相應的處理,但并不知道是由誰來激活的。生命線上的執行說明雖然是連續的,但那只是語義上的連續。消息的指向也是語義上的指向。從類參照的觀點來看,雙方都不需要意識對方的存在。
當SignalServer的處理結束后,往往是激活另外一個信號來報告處理結束,此處省略。信號的實現可能是Event,也可能是Mutex或Semaphore等。
以上是“EA畫UML時序圖中如何實現同步/異步”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。