亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Ruby中使用頻道

在Ruby中使用頻道

Go
翻閱古今 2021-04-01 01:13:59
在Go編程語言中,您可以使用稱為“通道”的結構來發送消息。 http://golang.org/doc/effective_go.html#channels我很想在Ruby中使用類似的東西,尤其是對于IPC。我想要的偽代碼:channel = Channel.newfork do  3.times{ channel.send("foo ") }  exit!endThread.new do  3.times{ channel.send("bar ") }endloop do  print channel.recvend# ~> bar foo foo bar bar foo是否有任何可以像Ruby這樣工作的構造,庫或等效項?如果不是:構建這種抽象的最佳方法是什么?更新:為了闡明我從這些渠道中需要什么。一個用例:一些分叉的工人正在等待工作。它們都從相同的JobChannel讀取,并將結果報告給相同的ResultChannel。我需要的頻道很快寫入不阻塞,(消息發送)讀取執行阻止,(消息接收)分叉之前不需要特殊處理,輕巧和簡單會很好。到目前為止,我玩過DRb,(與輕量級+緩慢+我的小腦袋有太多魔力相對)套接字,(UNIXSocket,TCPSocket ...套接字似乎有許多使用它們的方式。我在UNIXSockets上獲得了半工作的通道。如果您認為套接字有意義,那么我應該看一下哪些功能子集?)管道。(連接兩個以上的進程似乎并非易事)如果其中任何一項已經是解決我的問題的理想技術,請提供教程等,其中包含有關我的要求的更多重點信息。
查看完整描述

2 回答

?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

Go的消息傳遞是一種一流的構造,它僅通過并發(goroutines,tasklet,無論您要稱呼什么),才是一流的構造。使用廉價的并發,阻止tasklet或協程不再是問題,并且阻止消息傳遞變得更加有意義。

如果這是Python,我會把您指向Stackless;在Ruby中,也許RevactorNeverBlock適合您?


查看完整回答
反對 回復 2021-04-26
  • 2 回答
  • 0 關注
  • 274 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號