SaaSHub helps you find the best software and product alternatives Learn more →
Top 23 Go Concurrency Projects
-
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.
-
golang-set
A simple, battle-tested and generic set type for the Go language. Trusted by Docker, 1Password, Ethereum and Hashicorp.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
go-wrk
go-wrk - a HTTP benchmarking tool based in spirit on the excellent wrk tool (https://github.com/wg/wrk)
-
machine
Machine is a zero dependency library for highly concurrent Go applications. It is inspired by errgroup.Group with extra bells & whistles (by autom8ter)
-
ratelimiter
A concurrent rate limiter library for Golang based on Sliding-Window rate limiter algorithm.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
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.)
Hatchet (https://hatchet.run) | New York City | Full-time
We're hiring a founding engineer to help us with development on our open-source, distributed task queue: https://github.com/hatchet-dev/hatchet.
We recently launched on HN, you can check out our launch here: https://news.ycombinator.com/item?id=39643136. We're two second-time YC founders in this for the long haul and we are just wrapping up the YC W24 batch.
As a founding engineer, you'll be responsible for contributing across the entire codebase. We'll compensate accordingly and with high equity. It's currently just the two founders + a part-time contractor. We're all technical and contribute code.
Stack: Typescript/React, Go and PostgreSQL.
To apply, email alexander [at] hatchet [dot] run, and include the following:
1. Tell us about something impressive you've built.
2. Ask a question or write a comment about the state of the project. For example: a file that stood out to you in the codebase, a Github issue or discussion that piqued your interest, a general comment on distributed systems/task queues, or why our code is bad and how you could improve it.
For worker pools of goroutines, this has always been "good enough" for me: https://github.com/gammazero/workerpool
We just released v2.0.0-alpha1 of https://github.com/shomali11/slacker
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
Project mention: Otter, Fastest Go in-memory cache based on S3-FIFO algorithm | news.ycombinator.com | 2023-12-23In 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.
Go Concurrency related posts
-
The Case of a Leaky Goroutine
-
Yazi: Fast terminal file manager based on async I/O
-
RxGo: Reactive Extensions for the Go Language
-
Flowmatic: Structured concurrency made easy
-
Show HN: Rendering Fractals with Goroutines
-
I’ve learned Go‘s concurrency model by rendering fractals
-
GO: How to Write a Worker Pool
-
A note from our sponsor - SaaSHub
www.saashub.com | 22 May 2024
Index
What are some of the best open-source Concurrency projects in Go? This list will help you:
Project | Stars | |
---|---|---|
1 | conc | 8,472 |
2 | RxGo | 4,871 |
3 | concurrent-map | 4,144 |
4 | golang-set | 3,944 |
5 | bild | 3,926 |
6 | hatchet | 3,304 |
7 | go-concurrency-patterns | 2,582 |
8 | go-concurrency-guide | 2,362 |
9 | go-web-framework-benchmark | 2,009 |
10 | workerpool | 1,253 |
11 | pond | 1,242 |
12 | go-wrk | 858 |
13 | slacker | 810 |
14 | ZenQ | 636 |
15 | gowp | 492 |
16 | goconcurrentqueue | 365 |
17 | machine | 358 |
18 | semgroup | 289 |
19 | util | 286 |
20 | flowmatic | 254 |
21 | ratelimiter | 238 |
22 | theine-go | 221 |
23 | zeropool | 213 |
Sponsored