tag channel

標籤
貢獻19
90
09:55 AM · Nov 04 ,2025

@channel / 博客 RSS 訂閱

flydean - netty系列之:好馬配好鞍,為channel選擇配套的selector

簡介 我們知道netty的基礎是channel和在channel之上的selector,當然作為一個nio框架,channel和selector不僅僅是netty的基礎,也是所有nio實現的基礎。 同樣的,我們知道netty很多種不同的協議,這些協議都是在channel上進行通訊的,那麼對於不同的協議來説,使用的channel和selector會有所不同嗎? 帶着這個疑問,我們一起來深入探究一下吧

channel , selector , netty , JAVA

收藏 評論

soroqer - Channel 的源碼分析與高效使用-Golang 🔥

“不要通過共享內存來通信,而要通過通信來共享內存”。這句話精準概括了 Go 併發模型的核心哲學——而承載這一哲學的核心原語,正是 channel(通道)。 要深入理解 channel,我們需要從 runtime 包的源碼層面分析其核心結構、關鍵操作(創建、發送/接收、關閉)的實現邏輯,以及底層如何通過同步機制(鎖、等待隊列)實現協程(Goroutine)間的安全通信。 以下源碼基於 go1.24.

channel , 效率 , 源碼分析 , go

收藏 評論

vistart - Golang 中使用通道構建協程間的依賴關係(工作流)

假設有一組任務有前後依賴關係,我們可以使用Go的通道特性,將前一個任務的執行結果(或結束信號)送入下一個任務,已達到自動化依次執行工作流的每個任務的目的。 為了模擬這一工作流,我們假設有五個通道和四個協程,每個協程監聽前一個通道的數據,並將接收到的數據送入下一個通道中。 當任務執行結束後,最好能夠主動回收通道,已達到節省內存開銷的目的。與執行工作流類似的是,應當能做到關閉首個通道後,按照依賴關係連

channel , 協程 , 工作流 , go

收藏 評論

vistart - Golang 中保存通道的 map 在設為 nil 後不會回收元素,即通道依然有效

Golang 中,如果用一個 map 保存實例化的通道,並用在協程間發送和接收。當該 map 被賦值為 nil 時,管理的通道依然有效。 示例代碼如下: package main import ( "fmt" "time" ) func main() { // 創建一個map用於保存通道 channelMap := make(map[string]chan in

channel , 垃圾回收 , 協程 , map , go

收藏 評論

vistart - Golang 如何監聽某個函數(方法)開始執行和執行結束

如果想監聽函數(方法)開始執行和執行結束,你需要設置兩個通道: chanStarted: 用於發送開始執行信號。 chanFinished: 用於發送執行結束信號。 同時,為了保證監聽方能實時得知“開始執行”或“執行結束”信號,需要在執行任務前開啓監聽。 以下為模擬監聽函數(方法)開始執行和執行結束的示例: package main import ( "context"

函數 , channel , 狀態 , 監聽 , go

收藏 評論

vistart - Golang 使用通道實現流程的暫停與繼續

Golang 中主流程要控制某個協程的暫停與繼續,需要兩個通道分別接收來自主流程的通知,並在協程中始終監聽這兩個通知。例如: package main import ( "fmt" "time" ) func main() { // 創建一個通道 chPause := make(chan struct{}) chResume := make(chan s

channel , 異步 , go

收藏 評論

後廠村村長 - go 通道-channel、協程-routine、sync

go 通道-channel、協程-routine、sync golang 裏不需要學習如何創建維護進程池/線程池,也不需要分析什麼情況使用多線程,什麼情況使用多進程,因為你沒得選。 當然,也不需要選。 go原生的 goroutine(協程)已足夠優秀,能自動幫你處理好所有事情,而你要做的只是執行它,so easy... goroutine 也是go天生支持高併發的底氣。 g

channel , sync , 協程 , go

收藏 評論

proheart - Kotlin之Channel實戰(3)

通道 認識Channel 容量與迭代 produce與actor Channel的關閉 BroadcastChannel 多路複用 什麼是多路複用 複用多個await 複用多個Channel SelectClause Flow實現多路複用 併發安全 協程的併發工具

Kotlin , channel

收藏 評論

阿東 - 《跟閃電俠學Netty》閲讀筆記 - ChannelHandler 生命週期

引言 本文主要介紹ChannelHandler當中的ChannelInboundHandler。 思維導圖 https://www.mubu.com/doc/1lK922R14Bl LifeCycleTestHandler 案例 首先來看一下案例,LifeCycleTestHandlerTest 利用適配器 ChannelInboundHandlerAdapter 重寫,重寫相關方法。 pu

channel , netty

收藏 評論

journey - go chan 使用經驗分享

1、帶緩衝 vs 無緩存 1.1、帶緩衝 ch := make(chan int, num) 描述:這是一個 帶緩衝 的通道,緩衝區大小為 1 特性 : 發送數據到通道時,如果緩衝區未滿,發送操作不會阻塞 接收數據時,如果緩衝區不為空,接收操作不會阻塞 緩衝區的大小決定了可以在通道中存儲多少數據而不需要立即被接收 示例 : ch := make(chan int, 1) ch - 42

goroutine , channel , go

收藏 評論

站在巨人的肩上 - java-netty-Selector

背景:java網絡編程框架底層的多路複用的 面向對象設計 NioEventLoopGroup:上層是bootstrap起動器,下層是selector。 從學習過程中的案例可以看出,EventLoopGroup裏有多個線程, 這些線程從管理連接通道(channel),處理channel上的讀寫事件,此時就出現了selector和selectionKey selector:幹活的,從註冊的so

channel , selector , selection-api , netty

收藏 評論

SRETALK - 漫畫圖解 Go 併發編程之:Channel

當談到併發時,許多編程語言都採用共享內存/狀態模型。然而,Go 通過實現 Communicating Sequential Processes(CSP)而與眾不同。在 CSP 中,程序由不共享狀態的並行處理器組成;相反,他們使用 Channel 來溝通和同步他們的行動。因此,對於有興趣採用 Go 的開發人員來説,理解 Channel 的工作原理變得至關重要。在本文中,我將使用地鼠經營他們想象中的咖

channel , go

收藏 評論

京東雲開發者 - 京東金融客户端用户觸達方式的探索與實踐

一、關於用户觸達 用户觸達:可以簡單理解為通過某種方式將消息傳遞給用户的行為;觸達的特定消息從功能上可分展示、引導落地兩層。用户觸達作為一種產品運營方式,已經融入我們日常生產活動的方方面面。在移動互聯網的世界裏,我們的產品離不開觸達,用户活動也離不開觸達。 二、為什麼做用户觸達 以用户使用角度來看,用户在使用 App 的過程中會有一些與用户相關的系統類的通知,比如交易物流、客服消息、賬

app , channel , widget , Android , 運營

收藏 評論

左詩右碼 - 你真的會使用 Go 語言中的 Channel 嗎?

Go 語言的併發模型是其強大之處之一,而 Channel 則是這一模型的核心。Channel 提供了一種在 goroutine 之間進行通信和同步的機制。然而,正確地使用 Channel 並不是一件簡單的事情。 本文將詳細介紹在 Go 語言中使用 Channel 時需要注意的事項,並通過一些示例代碼來演示。各位觀眾老爺們,花生瓜子準備好了嗎? 1. 初始化 Channel 在使用 Channel

channel , go

收藏 評論

liuyuede - go channel原理及使用場景

轉載自:go channel原理及使用場景 源碼解析 type hchan struct { qcount uint // Channel 中的元素個數 dataqsiz uint // Channel 中的循環隊列的長度 buf unsafe.Pointer // Channel 的緩衝區數據指針 elemsi

channel , 協程 , go

收藏 評論

hxd_ - go 協程操作map導致的數據競爭及解決方法

原文鏈接:何曉東 博客 場景 有個查詢結果集的操作,無可避免的需要在循環獲取數據,然後將結果集放到 map 中,這個操作在壓測的時候,沒出現問題,發佈到生產環境之後,開始偶現 fatal error: concurrent map read and map write 錯誤,導致容器重啓了。 原因 多個協程同時對 map 進行讀寫操作,導致數據競爭 測試環境壓測未復現是因為單個 pod 常規

race-condition , goroutine , channel , map , go

收藏 評論

這個名字好長 - 用golang的channel特性,來做簡易分揀機的中控部分

先介紹一下項目的背景,之前單位有一個做小型快遞分揀機的需求,針對小型包裹智能分揀到不通的出口。大致的物理傳送帶如下方圖所示,原諒我不會畫圖。此文章的目的,只是給大家展示一下golang channel的用處。 如上圖所示,傳送帶分了幾個部分,頭部區域,分揀工作區域,硬件設備(傳感器和臂手)。 頭部區域主要有攝像頭和掃碼槍,主要是識別包裹,查詢出包裹對應的區域地址。 頭部區域和分揀工作

goroutine , channel , 併發模型

收藏 評論

Hunter - Golang基礎筆記十之goroutine和channel

本文首發於公眾號:Hunter後端 原文鏈接:Golang基礎筆記十之goroutine和channel 這一篇介紹 Golang 裏的 goroutine 和 channel 通道。 以下是本篇筆記目錄: goroutine channel goroutine 與 channel 的使用 1、goroutine goroutine 是一種輕量級線程(用户態線程),由 Go 運行

goroutine , channel , go , 後端

收藏 評論

flydean - netty系列之:netty中各不同種類的channel詳解

簡介 channel是連接客户端和服務器端的橋樑,在netty中我們最常用的就是NIO,一般和NioEventLoopGroup配套使用的就是NioServerSocketChannel和NioSocketChannel,如果是UDP協議,那麼配套使用的就是NioDatagramChannel,如果是別的協議還有其他不同的Channel類型。 這些不同channel類型有什麼區別呢?一個直觀的感覺

channel , netty , JAVA

收藏 評論

yangrd - 用rust寫lisp解釋器2 (實現一個簡單的異步模型(channel + thread => go))

背景 前段時間實現了一個 call-with-tcp-listener 過程(函數) (call-with-tcp-listener "127.0.0.1:8088" ( lambda (in) ( (display (req-read-string in)) "HTTP/1.1 200 OK\r\n\r\n hello word" ))) 如果是簡單的返回數據還不存

interceptor , channel , rust , lisp , thread

收藏 評論

墨色天香 - Java NIO

在 Java IO 編程中,傳統的字節流與字符流大家都不陌生,但當面對高併發、大文件處理等場景時,NIO(New IO)中的 Buffer 與 Channel 逐漸成為性能優化的關鍵。本文將深入剖析 Buffer 與 Channel 的核心概念,通過對比傳統 IO 流,帶你理解它們為何能顯著提升 IO 效率,並配合直觀的圖示幫你建立清晰的認知。 一

channel , 開發語言 , 後端開發 , buffer , JAVA , harmonyos , nio

收藏 評論

flydean - netty系列之:EventExecutor,EventExecutorGroup和netty中的實現

簡介 netty作為一個異步NIO框架,多線程肯定是它的基礎,但是對於netty的實際使用者來説,一般是不需要接觸到多線程的,我們只需要按照netty框架規定的流程走下去,自定義handler來處理對應的消息即可。 那麼有朋友會問了,作為一個NIO框架,netty的多線程到底體現在什麼地方呢?它的底層原理是什麼呢? 今天帶大家來看看netty中的任務執行器EventExecutor和EventEx

channel , netty , JAVA

收藏 評論

flydean - netty系列之:channel和channelGroup

簡介 channel是netty中數據傳輸和數據處理的渠道,也是netty程序中不可或缺的一環。在netty中channel是一個接口,針對不同的數據類型或者協議channel會有具體的不同實現。 雖然channel很重要,但是在代碼中確實很神秘,基本上我們很少能夠看到直接使用channel的情況,那麼事實真的如此嗎?和channel相關的ChannelGroup又有什麼作用呢?一起來看看吧。 神

channel , netty , JAVA , nio

收藏 評論

liuyuede - golang中的幾種併發模式

0.1、索引 https://blog.waterflow.link/articles/1663551951058 1、for- select模式 這種模式通常用在從多個通道讀取數據 package main import ( "fmt" "time" ) func main() { ch1, ch2 := make(chan int), make(chan int)

channel

收藏 評論