tag goroutine

標籤
貢獻18
92
11:00 AM · Nov 04 ,2025

@goroutine / 博客 RSS 訂閱

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

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

goroutine , channel , 併發模型

收藏 評論

粘豆煮包 - 腦抽研究生Go併發-1-基本併發原語-下-Cond、Once、Map、Pool、Context

Once 單例對象:在整個應用程序的生命週期中,只有一個實例存在,並提供一個全局統一的訪問點來獲取這個唯一的實例 應用場景:數據庫連接池,全局配置管理器,日誌記錄器 (Logger) Once 是在 Go 語言中實現線程安全的單例模式的完美且最地道的工具 使用 Once 可能出現的 2 種錯誤 第一種錯誤:死鎖 ​ once.Do()中再次調用once.Do() 第二種錯誤

goroutine , 知識 , 併發 , go , 後端

收藏 評論

tekin - go語言控制goroutine協程退出的2種方法總結

我們知道,在go語言中,goroutine的執行會隨着main線程的退出而終結, 即如果main線程退出,則所有的goroutine都會被強制退出,不管你是否已經執行完畢。 如果我們希望main進程等待所有的goroutine執行完畢後再退出,則可以有3種方式來實現,具體如下: 1. 使用go標準庫sync中提供的 sync.WaitGroup裏面提供的Add, Done, Wait方法; pac

goroutine , 方法 , 協程 , go , 總結

收藏 評論

秦川 - Go Context 應用場景和一種錯誤用法

context 應用場景 Go 的 context 包,可以在我們需要在完成一項工作,會用到多個 routine (完成子任務)時,提供一種方便的在多 routine 間控制(取消、超時等)和傳遞一些跟任務相關的信息的編程方法。 一項任務會啓動多個 routine 完成。 需要控制和同步多個 routine 的操作。 鏈式的在啓動的 routine 時傳遞和任務相關的一些可選信息。 舉一

goroutine , context , 併發 , go

收藏 評論

爆裂Gopher - 淺談Goroutine的調度機制

一、什麼是Goroutine 在go語言中,每一個併發的執行單元叫作一個goroutine,與併發相對的是串行,即代碼按照順序一行一行執行,goroutine 給 go 語言提供了併發編程的能力。 當一個程序啓動時,其主函數在一個單獨的goroutine中運行,我們叫它main goroutine,新的goroutine會用go語句來創建。在語法上,go語句是一個普通的函數或方法調用前加上關鍵字g

調度器 , goroutine , 協程 , gmp , go

收藏 評論

journey - go chan 使用經驗分享

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

goroutine , channel , go

收藏 評論

7mandy7 - 基於 JIT 技術的開源全場景高性能 JSON 庫

大家好,我是Mandy,上一節我們對Go中的切片數據類型進行了深度的剖析,今天給大家分享一個字節跳動自研開源的JSON數據解析包。一個速度奇快的 JSON 序列化/反序列化庫,由 JIT (即時編譯)和 SIMD (單指令流多數據流)加速。 sonic 是字節跳動開源的一款 Golang JSON 庫,基於即時編譯(Just-In-Time Compilation)與向量化編程(Single In

goroutine , go

收藏 評論

屈天航 - 聊一聊python和golang協程的區別

背景 最近在做後端服務python到go的重構,這兩種語言裏,最大的特色和優勢就是都支持協程。之前主要做python的性能優化和架構優化,一開始覺得兩個協程原理和應用應該差不多,後來發現還是有很大的區別,今天就在這裏總結一下。 什麼是協程 在説它們兩者區別前,我們首先聊一下什麼是協程,好像它沒有一個官方的定義,那就結合平時的應用經驗和學習內容來談談自己的理解。 協程,其實可以理解為一種用户態特殊

goroutine , coroutine , 協程 , go , Python

收藏 評論

liuyuede - goroutine調度

0.1、索引 https://blog.waterflow.link/articles/1662974432717 1、進程 一個進程包含可以由任何進程分配的公共資源。這些資源包括但不限於內存地址空間、文件句柄、設備和線程。 一個進程會包含下面一些屬性: Process ID:進程ID Process State:進程狀態 Process Priority:進程優先級 Program C

goroutine , 協程 , gmp

收藏 評論

janrs_com - Golang 協程/線程/進程 區別以及 GMP 詳解

Golang 協程/線程/進程 區別詳解 轉載請註明來源:https://janrs.com/mffp 概念 進程 每個進程都有自己的獨立內存空間,擁有自己獨立的地址空間、獨立的堆和棧,既不共享堆,亦不共享棧。一個程序至少有一個進程,一個進程至少有一個線程。進程切換隻發生在內核態。 線程 線程擁有自己獨立的棧和共享的堆,共享堆,不共享棧,是由操作系統調度,是操作系統調度(CPU調度)執行的最小單

goroutine

收藏 評論

一大塊芝士 - Go語言有沒有結構化編程?

本文原文地址在本博主博客,點擊鏈接前往:Go語言中有沒有結構化併發? 什麼是結構化併發?日常開發中我們編寫的最多就是多線程程序,服務器端應用更是如此,傳統的方式都是依靠着操作系統提供的1:1線程方式進行請求處理這對於管理和複用線程有很多挑戰,如果一個普通線程大小2MB那麼開啓1000個線程,幾乎是無法完成的,並且管理這些線程的狀態也是很複雜的。今天這篇文章要介紹的是結構化併發,就是為解決併發編程

goroutine , 並行化 , 結構化數據存儲 , go

收藏 評論

7mandy7 - 初學Go 值得深研的7大開源項目

本文已收錄Golang學習庫。本庫涵蓋PHP、JavaScript、Linux、Golang、MySQL、Redis和開源工具等等相關內容。 go-admin go-admin基於Gin + Vue + Element UI的前後端分離權限管理系統,系統初始化極度簡單,只需要配置文件中,修改數據庫連接,系統支持多指令操作,遷移指令可以讓初始化數據庫信息變得更簡單,服務指令可以很簡單的啓動api服務

goroutine , 開源軟件 , go-zero , go

收藏 評論

粘豆煮包 - 腦抽研究生Go併發-2-Channel-基本用法、實現原理、消息交流、數據傳遞、信號通知、任務編排等

Channel CSP(Communicating Sequential Process):CSP 允許使用進程組件來描述系統,它們獨立運行,並且只通過消息傳遞的方式通信 Channel 類型是 Go 語言內置的類型,可以直接使用 Don’t communicate by sharing memory, share memory by communicating. --Go Proverbs b

goroutine , 知識 , concurrency , go , 後端

收藏 評論

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

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

race-condition , goroutine , channel , map , go

收藏 評論

soroqer - Goroutine 的創建與調度:從 GPM 模型到 go 關鍵字的底層邏輯

併發,對於每個語言來説都是最重要的一部分。Goroutine 採用 m:n 模型,是一種輕量化的多線程處理。 一、為什麼需要 Goroutine ? 在理解 Goroutine 之前,我們先回顧一下的傳統併發模型。在多數編程語言(如 Java、C++)中,併發主要依賴「線程」(Thread)實現。但線程存在兩個問題: 創建成本高:每個線程需要佔用獨立的棧空間(通常幾 MB),操作系統需要為線

goroutine , gmp

收藏 評論

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

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

goroutine , channel , go , 後端

收藏 評論

liuyuede - goroutine&waitgroup下載文件

0.1、索引 https://blog.waterflow.link/articles/1663078266267 當我們下載一個大文件的時候,會因為下載時間太久而超時或者出錯。那麼我麼我們可以利用goroutine的特性併發分段的去請求下載資源。 1、Accept-Ranges 首先下載鏈接需要在響應中返回Accept-Ranges,並且它的值不為 “none”,那麼該服務器支持範圍請求。比如我

goroutine , 文件下載

收藏 評論

粘豆煮包 - 腦抽研究生Go併發-4-分佈式併發原語-etcd、Leader 選舉、分佈式隊列和優先級隊列、分佈式柵欄、STM

分佈式併發原語 常用來做協調工作的軟件系統是 Zookeeper、etcd、Consul 之類的軟件 Zookeeper - Java Consul 分佈式併發原語一般 etcd🐂:分佈式互斥鎖、分佈式讀寫鎖、Leader 選舉 Leader 選舉 Leader + Slave 主節點常常執行寫操作,從節點常常執行讀操作,如果讀寫都在主節點,從節點只是提供一個備份功能的話,那麼,主從架構就會退

goroutine , 知識 , concurrency , go , 後端

收藏 評論

mghio - Go 併發模型—Goroutines

前言 Goroutines 是 Go 語言主要的併發原語。它看起來非常像線程,但是相比於線程它的創建和管理成本很低。Go 在運行時將 goroutine 有效地調度到真實的線程上,以避免浪費資源,因此您可以輕鬆地創建大量的 goroutine(例如每個請求一個 goroutine),並且您可以編寫簡單的,命令式的阻塞代碼。因此,Go 的網絡代碼往往比其它語言中的等效代碼更直接,更容易理解(這點從下

goroutine , 併發模型 , 併發編程 , go

收藏 評論

liuyuede - golang中經常會犯的一些錯誤

0.1、索引 https://waterflow.link/articles/1664080524986 1、未知的枚舉值 我們現在定義一個類型是unit32的Status,他可以作為枚舉類型,我們定義了3種狀態 type Status uint32 const ( StatusOpen Status = iota StatusClosed StatusUnknown )

goroutine , go

收藏 評論

楊帆 - golang goroutine 協程原理

goroutine簡介 goroutine的本質是協程,是實現並行計算的核心。goroutine使用方式非常的簡單,只需使用go關鍵字+方法或者方法模塊即可啓動一個協程。並且它是處於異步方式運行,你不需要等它運行完成以後在執行以後的代碼。 go func()//通過go關鍵字啓動一個協程來運行函數 goroutine內部原理 概念介紹 在進行實現原理之前,瞭解下一些關鍵性術語的概念。 併發 一個

goroutine , go

收藏 評論

粘豆煮包 - 腦抽研究生Go併發-6-實際應用場景(大模型生成)-淘寶“雙十一”零點秒殺,支撐一個千萬播放量、百萬評論的爆款視頻

實際應用場景(大模型生成) 場景設定:設計淘寶“雙十一”零點秒殺一個超熱門商品(比如 茅台)的後端系統 業務挑戰: 超高峯值流量:在零點鐘聲敲響的第一秒,可能會有數百萬用户同時點擊“搶購”按鈕。 數據強一致性:庫存只有 1000 瓶,絕對不能超賣。即賣出第 1001 瓶。 高可用性:系統不能崩潰。 公平性:儘量保證先到先得。 實施過程:一場精心編

觀點 , goroutine , concurrency , go , 後端

收藏 評論

Yuan_sr - Select多路複用

在某些場景下我們需要同時從多個通道接收數據。通道在接收數據時,如果沒有數據可以接收將會發生阻塞,而select就可以同時監聽一個或多個channel,直到其中一個channel準備好。 select的使用類似於switch語句,它有一系列case分支和一個默認的分支。每個case會對應一個通道的通信(接收或發送)過程。select會一直等待,直到某個case的通信操作完成時,就會執行case分支對

goroutine , select , go

收藏 評論

粘豆煮包 - 腦抽研究生Go併發-1-基本併發原語-上-Mutex、RWMutex、WaitGroup

基本併發原語 臨界區:避免程序中併發訪問或修改造成嚴重後果。 數據庫、共享數據結構、I/O 設備、連接池中的連接 同步原語 包含:互斥鎖 Mutex、讀寫鎖 RWMutex、併發編排 WaitGroup、條件變量 Cond、Channel 等 適用場景: 共享資源 任務編排:goroutine + WaitGroup/Channel 消息傳遞:goroutine +Channel。

goroutine , 知識 , concurrency , go , 後端

收藏 評論