共用方式為


訊息傳遞函式

非同步代理程式程式庫提供數個可讓您在元件之間傳遞訊息的函式。

這些訊息傳遞函式可搭配各種不同的訊息區塊類型使用。 如需並行執行階段所定義之訊息區塊類型的詳細資訊,請參閱非同步訊息區

章節

本主題說明下列訊息傳遞函式:

  • send 和 asend

  • receive 和 try_receive

  • 範例

send 和 asend

concurrency::send 函式會以同步方式將訊息傳送至指定的目標,而 concurrency::asend 函式會以非同步方式將訊息傳送至指定的目標。 sendasend 函式都會等候目標表示終於接受或拒絕訊息。

send 函式會等到目標接受或拒絕訊息再傳回。 如果已傳遞訊息,則 send 函式會傳回 true,否則會傳回 false。 因為 send 函式是以同步方式運作,所以 send 函式會等到目標收到訊息再傳回。

相反地,asend 函式並不會等到目標接受或拒絕訊息才傳回。 如果目標接受訊息,而且最後會採用它,則 asend 函式會傳回 true。 否則,asend 會傳回 false,表示目標已拒絕訊息,或是以後才要決定是否採用訊息。

[上方]

receive 和 try_receive

concurrency::receiveconcurrency::try_receive 函式會從指定的來源讀取資料。 receive 函式會等到有資料可用時才傳回,而 try_receive 函式則會立即傳回。

當您必須要有資料才能繼續時,請使用 receive 函式。 如果您絕對不能封鎖目前的內容,或是沒有資料也可以繼續,請使用 try_receive 函式。

[上方]

範例

如需使用 sendasendreceive 函式的範例,請參閱下列主題:

[上方]

請參閱

參考

send 函式

asend 函式

receive 函式

try_receive 函式

概念

非同步代理程式程式庫

非同步訊息區