Stories
ListChannel 的源碼分析與高效使用-Golang 🔥
“不要通過共享內存來通信,而要通過通信來共享內存”。這句話精準概括了 Go 併發模型的核心哲學——而承載這一哲學的核心原語,正是 channel(通道)。 要深入理解 channel,我們需要從 runtime 包的源碼層面分析其核心結構、關鍵操作(創建、發送/接收、關閉)的實現邏輯,以及底層如何通過同步機制(鎖、等待隊列)實現協程(Goroutine)間的安全通信。 以下源碼基於 go1.24.
Rust 和 Go 在多線程的對比
1. Go 的 Goroutine:輕量且高效 Goroutine 是 Go 中非常核心的併發單元。它是 用户級線程,由 Go 的運行時調度器管理,而不是由操作系統的內核調度。 輕量性: 內存佔用:每個 goroutine 的棧內存只有 2KB 左右,遠小於傳統線程的棧大小(一般為幾 MB)。這使得你可以輕鬆地創建成千上萬的 goroutines,而不會造成明顯的內存壓力。
WebSocket vs gRPC Stream:深度對比兩種流式通信技術
在實時通信與流式數據傳輸領域,WebSocket與gRPC Stream是最常被提及的兩項技術。本文將從協議設計、通信模型、適用場景等維度展開深度對比,幫助開發者理解兩者的本質差異與選擇邏輯。 一、前置知識:流式通信的核心需求 在分佈式系統中,流式通信主要解決兩類問題: 長連接實時交互:如聊天、監控數據推送、在線協作; 批量數據分塊傳輸:如大文件上傳/下載、日誌流同步、實時數據集同步。 W