2013-04-10 36 views

回答

3

你已經有了答案,一個基本組成部分,但在這裏不用。

將通道視爲消息隊列。

如果通道位於左側箭頭(<-)運算符的右側,則表示要使條目出列。保存在變量中項是可選

e <- q 

如果信道是上的左箭頭運算符左側,這意味着入隊的條目。

q <- e 

大約「出列」(接收),而不在變量存儲進一步注意:它可以在非緩衝的隊列被用來實現類似Java中的「等待/通知」操作:一個協程被阻塞等待出隊/接收信號,則另一個協程隊列/發送該信號,其內容不重要。(或者,發送者可能被阻塞,直到接收者拉出消息)

11

<-用於在一個以上的地方在語言規範:

Channel types

<-操作者指定的信道的方向,發送或接收。如果沒有給出方向,則通道是雙向的。頻道可能僅限於發送或僅通過轉換或分配接收。

Receive operator

對於信道類型的操作數ch,接收操作<-ch的值是從信道接收到的ch的值。值的類型是通道的元素類型。表達式阻塞,直到有值。從零通道接收永遠阻止。從關閉的通道接收總是成功,立即返回元素類型的零值。

Send statements

甲發送語句的頻道上發送的值。通道表達式必須是通道類型,並且值的類型必須可分配給通道的元素類型。

SendStmt = Channel "<-" Expression . 
Channel = Expression . 

接收運營商也是該select statement

+0

箭頭給出了數據流向的提示。就我個人而言,我更喜歡Occam-Pi的語法?用於輸入而不是<-ch(提示查詢頻道)和!用於輸出而不是ch < - (提示通道指令) – 2013-04-10 16:40:45

+1

我想知道爲什麼箭頭總是指向左側。爲什麼他們不使用<- and ->? – marcus 2013-05-15 15:50:59

相關問題