我們在之前的章節列舉了Pipeline(管道)的各種優點,但有時候,盡管管道沒有準備好,我們的程序依然還是要幹活的,這種處理方式,被稱為“Queue”(隊列)。...
在併發程式中,由於連接超時、使用者取消或系統故障,往往需要執行搶佔操作。過去,我們利用 done 通道在程式中取消所有阻塞的並發操作,儘管這方法有其效用,但確實...
使用併發代碼,特別是分布式系統,在系統中很容易出現問題,而且很難確認發生這種問題的原因。仔細考慮問題是如何通過系統傳播的,以及如何最終呈現給用戶,你會為自己,團...
在編寫併發代碼時,超時和取消會頻繁出現。那麽,我們為什麽需要併發程序支持超時呢?系統飽和正如我們在“隊列”部分所討論的那樣,如果系統已經達到最大負荷(即,它的處...
心跳(heartbeat)是併發進程向外界發出信號的一種方式。命名者從人體解剖學中受到啟發,使用心跳一詞表示被觀察 者的生命體征。心跳在Go語言出現前就已被廣泛...
對於大部分應用,儘可能快地響應請求是首要任務。例如,應用程序可能正在服務用戶的HTTP請求,或者檢索複製的數據塊。在這些情況下,你需要做出權衡:是將請求複製到多...
如果你曾經使用過API來獲取服務,那麽你可能經受過與速率限制相抗衡。速率限制使得某種資源每次訪 問的次數受限。資源可以是任何東西:API連接,磁盤I/O,網絡包...
下面的程式碼提供方法,使得在多個時間粒度上都能夠實現速率限制。這樣可以為你的API或其他資源設置多層的保護機制,以避免被過度使用或遭受攻擊。 複雜的速率限制...
在一些長時間運行的系統中,如守護進程(Daemon process),經常有一些常駐的子程序,名為goroutines。這些goroutines有時會因外部資源...
這一次鐵人賽終於順利結束了,在過去的三十天中,我們藉由concurrency in go這本書深入研究了Golang的併發編程,探討了併發的基本概念、Gorou...