workgroup
Structured concurrency manager for Go (by carlmjohnson)
tinykv
tiny in-memory single-app kv (cache) with explicit and sliding expiration (by acouvreur)
Our great sponsors
workgroup | tinykv | |
---|---|---|
7 | 1 | |
47 | 0 | |
- | - | |
0.0 | 0.0 | |
10 months ago | almost 2 years ago | |
Go | Go | |
MIT License | MIT License |
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
workgroup
Posts with mentions or reviews of workgroup.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2023-05-11.
-
Gworker, the most easily configurable Generic worker pool implementation
I still think my worker pool is the best: https://github.com/carlmjohnson/workgroup
- A lot of boilerplate code when writing asynchronous code in go
- Workgroup: An easy to use concurrent task manager
-
Implementing Thread/Worker pool using Go generics
I have one that I’ve been using for a while and just updated to use Go 1.20 multierrors: https://github.com/carlmjohnson/workgroup
-
How idiomatic is this?
Read https://blog.carlmjohnson.net/post/share-memory-by-communicating/ and look at the code in https://github.com/carlmjohnson/workgroup for reference.
-
How are YOU using generics so far?
So far, just refactoring. I made a concurrency manager to simplify some stuff, and unified some pagination code. It’s like we said before generics: there are places you miss it, but not having it was never a total blocker. I think going working the x/slices x/maps packages will be the biggest time savers.
-
Go, Generics, and Concurrency
Yeah, I wrote my own generic concurrency thing, and it has two functions. There's a high level Process(nWorkers, task, manager, initial) and a lower level Start(nWorkers, task) (in chan<- Input, out <-chan Result[Input, Output]). The high level function is built off of the low level one and just queues jobs for the task workers by giving job results to the manager to see if it produces any more work. Context isn't involved in either because the idea is that the tasks should have their own internal contexts. You don't want to cancel the task runner, you want to cancel the tasks!
tinykv
Posts with mentions or reviews of tinykv.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2022-05-20.
-
How are YOU using generics so far?
I used generics for unmarshalling data structures with inner structure that was an interface{} into the generic structure Works really fine! https://github.com/acouvreur/tinykv
What are some alternatives?
When comparing workgroup and tinykv you can also consider the following projects:
warg - Declarative and Intuitive Command Line Apps with Go
almanack - Predicts future sports scores
next-pwa - Zero config PWA plugin for Next.js, with workbox 🧰 with appDir support
watchman - AML/CTF/KYC/OFAC Search of global watchlist and sanctions
go-learn - Things I learnt about go
golpo - Social network using react and express (old version of the current golpo.dedsec.life)
infra - Infra provides authentication and access management to servers and Kubernetes clusters.
elegalio-template - Responsive and modern website template, made with React.
cm - Generic Go multilevel and dual maps.
BetterMeet - An open community platform