Go Concurrency

Open-source Go projects categorized as Concurrency

Top 23 Go Concurrency Projects

  • conc

    Better structured concurrency for go

    Project mention: The Case of a Leaky Goroutine | news.ycombinator.com | 2024-03-25

    It's a pity Go didn't have structured concurrency: https://vorpus.org/blog/notes-on-structured-concurrency-or-g...

    There's a library for it: https://github.com/sourcegraph/conc

    But this goes to one of the things I've been kind of banging on about languages, which is that if it's not in the language, or at least the standard library right at the beginning, sometimes it almost might as well not exist. Sometimes a new language can be valuable, even if it has no "new" language features, just to get a chance to reboot the standard library it has and push for patterns that older languages are theoretically capable of, but they just don't play well with any of the libraries in the language. Having it as a much-later 3rd party library just isn't good enough.

    (In fact if I ever saw a new language start up and that was basically its pitch, I'd be very intrigued; it would show a lot of maturity in the language designer.)

  • RxGo

    Reactive Extensions for the Go language.

    Project mention: RxGo: Reactive Extensions for the Go Language | news.ycombinator.com | 2023-08-19
  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • concurrent-map

    a thread-safe concurrent map for go

  • bild

    Image processing algorithms in pure Go

  • golang-set

    A simple, battle-tested and generic set type for the Go language. Trusted by Docker, 1Password, Ethereum and Hashicorp.

  • go-concurrency-patterns

    Concurrency patterns in Go

  • go-concurrency-guide

    Practical concurrency guide in Go, communication by channels, patterns

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

  • go-web-framework-benchmark

    :zap: Go web framework benchmark

  • workerpool

    Concurrency limiting goroutine pool (by gammazero)

    Project mention: What 3rd-party libraries do you use often/all the time? | /r/golang | 2023-12-01

    For worker pools of goroutines, this has always been "good enough" for me: https://github.com/gammazero/workerpool

  • pond

    🔘 Minimalistic and High-performance goroutine worker pool written in Go

  • go-wrk

    go-wrk - a HTTP benchmarking tool based in spirit on the excellent wrk tool (https://github.com/wg/wrk)

  • slacker

    Slack Bot Framework

    Project mention: Slack Bot Framework | /r/golang | 2023-06-29

    We just released v2.0.0-alpha1 of https://github.com/shomali11/slacker

  • ZenQ

    A thread-safe queue faster and more resource efficient than golang's native channels

  • gowp

    golang worker pool , Concurrency limiting goroutine pool

  • goconcurrentqueue

    Go concurrent-safe, goroutine-safe, thread-safe queue

  • machine

    Machine is a zero dependency library for highly concurrent Go applications. It is inspired by errgroup.Group with extra bells & whistles (by autom8ter)

  • semgroup

    Like errgroup/waitgroup, but only runs a maximum of tasks at any time.

  • util

    A collection of useful utility functions (by shomali11)

  • flowmatic

    Structured concurrency made easy

    Project mention: Async rust – are we doing it all wrong? | news.ycombinator.com | 2023-07-19

    I do that of course, and that's one of the easiest ways to use async Rust. In real projects you need much more however. F.ex. I had to code an example of how to add tasks to an already running pool of tasks and posted my findings here: https://github.com/dimitarvp/rust-async-examples/blob/main/e... (there's #2 as well with some more comments and a different approach).

    The fact that I needed to make a GitHub repo and start making show-and-tell demos on how to do various things with async Rust to me is both a red flag and me being diligent BUT it should be more obvious. And promoted in docs.

    Rust started suffering from "you got all the nuts and bolts in place, now build your own solution, son" syndrome which I grew to dislike. Too low-level. I wouldn't mind something akin to e.g. Golang's flowmatic library (check the first two examples at the top of the README): https://github.com/carlmjohnson/flowmatic

  • ratelimiter

    A concurrent rate limiter library for Golang based on Sliding-Window rate limiter algorithm.

  • theine-go

    high performance in-memory cache

    Project mention: Otter, Fastest Go in-memory cache based on S3-FIFO algorithm | news.ycombinator.com | 2023-12-23

    In fact, lock-free queues have several problems at once, which prompted me to give up on them almost immediately.

    1. Yes, S3-FIFO can be implemented using lock-free queues, but the problem is that each write to a filled cache using this design will cause a large number of additional atomic operations not friendly to the processor's cache, while bp-wrapper on the contrary amortizes this load. And reading with frequency update on hot entries can have a bad effect on performance. In many ways this is exactly what the last posts in my discussion with Ben are about (not really about this, but the current problem with otter read speed is caused by a similar problem). https://github.com/Yiling-J/theine-go/issues/29#issuecomment...

    2. But the main problem for me is not even that. Lock-free queues work fine as long as you only need to support Get and Set operations, but as soon as you want to add features to your cache, the complexity of the implementation starts to increase, and some features are very hard to add to such a structure. Also, improving the eviction policy is under a big question mark, because not only do you have to think about how to improve the eviction policy, but also how to avoid locks while doing so or how not to slow down the implementation with your improvements. BP-Wrapper has no such problems at all, allows you to use any eviction policy and focus on improving different parts of your cache independently of each other.

  • zeropool

    Zero-allocation type-safe pool for Go

  • async

    Synchronization and asynchronous computation package for Go (by reugn)

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2024-03-25.

Go Concurrency related posts

Index

What are some of the best open-source Concurrency projects in Go? This list will help you:

Project Stars
1 conc 8,362
2 RxGo 4,848
3 concurrent-map 4,113
4 bild 3,909
5 golang-set 3,903
6 go-concurrency-patterns 2,582
7 go-concurrency-guide 2,360
8 go-web-framework-benchmark 1,997
9 workerpool 1,242
10 pond 1,195
11 go-wrk 842
12 slacker 808
13 ZenQ 631
14 gowp 488
15 goconcurrentqueue 358
16 machine 358
17 semgroup 289
18 util 286
19 flowmatic 238
20 ratelimiter 234
21 theine-go 215
22 zeropool 212
23 async 183
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com