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

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

IO通道與讀寫器

IO通道與讀寫器

Go
元芳怎么了 2021-05-17 15:17:05
由于Go具有通道,我想知道為什么標準庫似乎還沒有被設計為將它們也用于IO。而是有讀者和作家類型,但是使用頻道會出現什么問題?一個函數可以返回一個字節片通道(假設單字節,甚至單位返回效率太低),并接收一個用于取消請求的通道和一個用于錯誤報告的通道。-好奇的Go新手。
查看完整描述

3 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

通道非常適合在goroutine之間進行通信。當程序執行簡單的操作(例如讀取stdin,對流進行某些操作并將結果輸出到stdout)時,使用通道是一種過大的選擇,不必要地損害了性能。

只要標準庫在某些地方沒有提供特定于goroutine相互通信的東西,就沒有充分的理由為簡單的操作建模,例如使用基于通道的方法集(API)的通道io.Readerio.Writer使用通道的操作。

另外,在需要的地方,可以將簡單的實現方式包裝在一個通道中,相反,將“通道”實現“解包”回其原始狀態是不可能的。而且,Go的作者顯然喜歡顯性,從而導致性能瓶頸沒有被隱藏(并且令人驚訝)。


查看完整回答
反對 回復 2021-05-24
?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

我覺得還有一個原因io.Readerio.Writer存在,是因為他們在單線程水平發揮出色; 通道幾乎專門用于goroutine通信或多線程模型。在某些情況下,您可以互換使用它們,但是它們旨在解決2個不同的挑戰。 io.Reader并且io.Writer還具有EOF的概念,除非您在通道上分層放置單獨的協議,否則無法輕松地將其復制到通道中-當然,這將是一個過大的殺傷力。PS關閉通道與EOF都不相同,因為關閉通道會阻止將來使用它。

查看完整回答
反對 回復 2021-05-24
  • 3 回答
  • 0 關注
  • 252 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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