Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lotusirous/go-concurrency-patterns
Concurrency patterns in Go
https://github.com/lotusirous/go-concurrency-patterns
concurrency go golang patterns
Last synced: 11 days ago
JSON representation
Concurrency patterns in Go
- Host: GitHub
- URL: https://github.com/lotusirous/go-concurrency-patterns
- Owner: lotusirous
- Created: 2020-10-30T00:42:14.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-05-28T00:35:35.000Z (19 days ago)
- Last Synced: 2024-05-28T09:45:35.021Z (19 days ago)
- Topics: concurrency, go, golang, patterns
- Language: Go
- Homepage:
- Size: 29.3 KB
- Stars: 2,620
- Watchers: 33
- Forks: 230
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Lists
- awesome-stars - lotusirous/go-concurrency-patterns
- go-awesome - Go Concurrency Patterns - Go 并发模式场景集合 (文档 / 组织)
- my-awesome-stars - lotusirous/go-concurrency-patterns - Concurrency patterns in Go (Go)
- awesome-golang-repositories - go-concurrency-patterns
- awesome-stars - lotusirous/go-concurrency-patterns - Concurrency patterns in Go (Go)
- awesome-stars - lotusirous/go-concurrency-patterns - Concurrency patterns in Go (Go)
- go-awesome - Go Concurrency Patterns - Collection of Go Concurrency Patterns scenarios (Documentation / To Organize)
README
# Go Concurrency Patterns
This repository collects common concurrency patterns in Golang
## Materials
- [Concurrency is not parallelism](https://blog.golang.org/waza-talk)
- [Go Concurrency Patterns](https://talks.golang.org/2012/concurrency.slide#1)
and [source](https://talks.golang.org/2012/concurrency/support/)
- [Advanced Go Concurrency Patterns](https://talks.golang.org/2013/advconc.slide)
- [Rethinking classical concurrency pattern](https://www.youtube.com/watch?v=5zXAHh5tJqQ)
- [Go Concurrency Patterns: Pipelines and cancellation](https://blog.golang.org/pipelines)
- [Go Concurrency Patterns: Timing out, moving on](https://blog.golang.org/concurrency-timeouts)
- [Complex Concurrency Patterns with Go](https://www.youtube.com/watch?v=2HOO5gIgyMg)## Context:
- [Go Concurrency Patterns: Context](https://blog.golang.org/context)
- [How to correctly use package context](https://www.youtube.com/watch?v=-_B5uQ4UGi0)
- [justforfunc #9: The Context Package](https://www.youtube.com/watch?v=LSzR0VEraWw)
- [Contexts and structs](https://blog.golang.org/context-and-structs)| Name | Description | Playground |
|-----------------------------------------------------------|-----------------------------------------------------|-----------------------------------------------|
| [1-boring](/1-boring/main.go) | A hello world to goroutine | [play](https://play.golang.org/p/ienqr4bKGQ6) |
| [2-chan](/2-chan/main.go) | A hello world to go channel | [play](https://play.golang.org/p/amazakVmwFy) |
| [3-generator](/3-generator/main.go) | A python-liked generator | [play](https://play.golang.org/p/9ykTDe7qLSw) |
| [4-fanin](/4-fanin/main.go) | Fan in pattern | [play](https://play.golang.org/p/mw_29ibv0bh) |
| [5-restore-sequence](/5-restore-sequence/main.go) | Restore sequence | [play](https://play.golang.org/p/aV43DEmNZBz) |
| [6-select-timeout](/6-select-timeout/main.go) | Add Timeout to a goroutine | [play](https://play.golang.org/p/WIqNvmxiYvn) |
| [7-quit-signal](/7-quit-signal/main.go) | Quit signal | [play](https://play.golang.org/p/rKYKqMeoFDq) |
| [8-daisy-chan](/8-daisy-chan/main.go) | Daisy chan pattern | [play](https://play.golang.org/p/1y-4ERc3Xv4) |
| [9-google1.0](/9-google1.0/main.go) | Build a concurrent google search from the ground-up | [play](https://play.golang.org/p/xMhEBlcYkfz) |
| [10-google2.0](/10-google2.0/main.go) | Build a concurrent google search from the ground-up | [play](https://play.golang.org/p/-J5C9McGG9t) |
| [11-google2.1](/11-google2.1/main.go) | Build a concurrent google search from the ground-up | [play](https://play.golang.org/p/hNc_HStC2BT) |
| [12-google3.0](/12-google3.0/main.go) | Build a concurrent google search from the ground-up | [play](https://play.golang.org/p/uE82kcSDkSJ) |
| [13-adv-pingpong](/13-adv-pingpong/main.go) | A sample ping-pong table implemented in goroutine | [play](https://play.golang.org/p/hT6knhJjBXY) |
| [14-adv-subscription](/14-adv-subscription/main.go) | Subscription | [play](https://play.golang.org/p/J5cjAV-qtaR) |
| [15-bounded-parallelism](/15-bounded-parallelism/main.go) | Bounded parallelism | [play](https://play.golang.org/p/j_aq1dcGkGr) |
| [16-context](/16-context/main.go) | How to user context in HTTP client and server | [play](https://play.golang.org/p/ZKZfKtpEJqH) |
| [17-ring-buffer-channel](/17-ring-buffer-channel/main.go) | Ring buffer channel | [play](https://play.golang.org/p/aeUeCTWhgJ2) |
| [18-worker-pool](/18-worker-pool/main.go) | worker pool pattern | [play](https://play.golang.org/p/CxKoTnzb9Mx) |