【问题标题】:Is there any equivalent sliding-buffer chan in golang?golang中是否有任何等效的滑动缓冲区chan?
【发布时间】:2016-09-10 23:17:36
【问题描述】:

在clojure中我们可以有sliding-buffer chan; golang 中有没有等价物?

(require '[clojure.core.async :refer [go-loop <! >!! sliding-buffer chan]])
(def sliding-chan (chan (sliding-buffer 1)))
(go-loop []
  (println "Received:" (<! sliding-chan))
  (recur))
(dotimes [n 100]
  (>!! sliding-chan n))

;;=> Received: 0 
;;=> Received: 99

【问题讨论】:

    标签: go clojure


    【解决方案1】:

    我不这么认为。 Go 有 buffered channels 但是当频道满时它们会阻塞。

    你可能不得不自己写一些东西,也许中间有一个管理缓冲区的goroutine(也许使用deque;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-11
      • 2017-12-21
      • 2018-04-02
      • 2013-07-06
      • 2011-01-21
      • 2014-10-30
      • 2013-07-30
      相关资源
      最近更新 更多