AdSense

顯示具有 go-concurrency 標籤的文章。 顯示所有文章
顯示具有 go-concurrency 標籤的文章。 顯示所有文章

2024/6/24

Golang 使用errgroup.Group取得goroutine錯誤

Go的goroutine是另一條執行緒所以無法將錯誤以return回傳到main goroutine,除了利用channel取得錯誤,也可利用errgroup.Group來將錯誤回傳到main goroutine。

2024/4/10

Golang 利用channel限制goroutine數量

使用goroutine併發處理工作時,使用channel限制goroutine數量上限。

2024/3/20

Golang WaitGroup用法

Go的sync.WaitGroup可用來等待所有的goroutine都執行結束。

Golang 併發處理訊息練習

Go使用goroutine搭配channel併發處理大量訊息練習。

2022/12/17

Golang RWMutex 讀寫互斥鎖簡介

Go goroutine做並行程序時,利用sync.RWMutex讀寫鎖(read write lock)限制goroutine對競爭資源的讀取及寫入。

2022/12/14

Golang push RabbitMQ message to WebSocket client decouple 練習

本篇修改於「Golang 接收RabbitMQ訊息並推送到WebSocket client」,試著把RabbitMQ接收訊息與把訊息由WebSocket發送至WebSocket client的邏輯進行解耦的練習。

2022/12/11

Golang HTTP Server.Shutdown graceful shutdown

Go 1.8開始提供的http.Server.Shutdown可優雅地關閉server,稱為graceful shutdown。

2022/12/7

Golang 使用Channel取得goroutine的錯誤 to get goroutine error by channel

Go的goroutine函式因為是另個thread所以無法將錯誤以return回傳到main goroutine,因此可利用Channel來將錯誤(或其他結果)回傳到main goroutine。

Golang 接收RabbitMQ訊息並推送到WebSocket client

本篇介紹如何從RabbitMQ接收訊息然後推送到WebSocket client。

2022/11/22

Golang 離開goroutine infinit loop by cancel context

Go經常利用goroutine中的infinit loop(無窮迴圈)去接收channel送來的訊息,而透過Context離開goroutine無窮迴圈的方式如下。

2022/9/18

Golang range for channel

Go的for range除了遍歷陣列、slice或map的元素,也可用來來逐個取得channel中的資料。

2022/5/19

2022/4/29

Golang concurrent map簡單實作

Go實作一個簡單可供並行程序存取的concurrent map。

Golang Mutex互斥鎖簡介

Go goroutine做並行程序時,利用sync.Mutex來限制只能有一個goroutine存取程式區塊。

2021/10/2

Golang context 簡介

Go 標準函式庫的context package簡介。

2021/10/1

Golang select 逾時處理

Go 利用select設定逾時的方式如下。

Golang select 用法

Go select的用法如下。

2021/9/23

Golang Channel 接收敘述 Receive statements

Go語言的Receive statements是指從channel接收/取出值的敘述。

Golang Channel 發送敘述 Send statements

Go語言的Send statements是指把值送入channel的敘述。

AdSense