asio-grpc
concurrencpp
asio-grpc | concurrencpp | |
---|---|---|
4 | 16 | |
325 | 2,058 | |
- | - | |
9.0 | 1.2 | |
2 days ago | 5 days ago | |
C++ | C++ | |
Apache License 2.0 | MIT License |
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.
asio-grpc
-
Generate gRPC source files using CMake
Since I can never remember what arguments to pass to protobuf_generate to create Protobuf and gRPC source files, I wrote an article about it. It provides a copy-paste-able code snippet along with an explanation of all arguments that protobuf_generate accepts, how to format it nicely using cmake-format and how to make things easier with asio-grpc.
-
Using Asio for asynchronous gRPC clients and servers
Asio-grpc makes exactly that possible by providing an Asio execution_context compatible interface to the CompletionQueue. It supports all types of RPCs (including generic ones), completion tokens, cancellation, as well as libunifex sender/receiver (if you want to try out what might become std::execution). The latest release (v1.7.0) also introduced a GrpcStream class for writing Rust/Golang select-style code.
-
DevBlog #1 - Poseidon
It hasn't been without issue, however. Problems that may lie in official google-maintained libraries are of course present and required design changes, and I was even prompted to write my own bitset library that outperforms the C++ standard's by a factor of 60. Madness. Right?
-
C++20 coroutines for asynchronous gRPC services
Or check out the asio-grpc repository directly if you are looking to write asynchronous gRPC services with the features of Boost.Asio like C++20 coroutines, std::futures, stackless coroutines, callbacks and Boost.Coroutines.
concurrencpp
-
Is anyone using coroutines seriously?
I am using concurrencpp for my project. What I like about it is that it's basically a thread pool factory with coroutines. It allows for better structuring / organizing of multithreaded work. So for me the main advantage of coroutines is that the code looks easier to follow
- Concurrencpp – a C++20 library for coroutines and executors
-
Comparing asio to unifex
Equivalent concurrencpp code:
-
Do you think the current asynchronous models (executors, senders) are too complicated and really we just need channels and coroutines running on a thread pool?
I agree. I use concurrencpp for the exact use case you described - coroutines running on simple-to-understand-executors which return some asynchronous pipe for communication.
- concurrencpp version 0.1.6 has been released!
-
What happens if you co_await a std::future, and why is it a bad idea? - The Old New Thing
If you look at concurrencpp, you can control exactly where and how coroutines are resumed, using executors.
-
Collecting the best C++ practices
concurrencpp. Modern concurrency for C++. Tasks, executors, timers and C++20 coroutines to rule them all.
-
C++ Coroutines from scratch - Phil Nash - Meeting C++ 2022
Just use a good third party library like concurrencpp .
-
Header-only C++14 quality thread pool
Hi, I am looking for a header-only C++14 (or lower) quality thread pool. Ideally, it would be similar to BS::thread_pool but in C++14. Most of them I find on GitHub are bloated (e.g. concurrencpp) or have many open Issues. Ideal usage would be similar to:
-
Good repos for beginners to browse that follow best modern C++ practices (including testing, static analysis etc...)
I use concurrencpp for my asynchronous code and the repo is written in modern cpp, with tests, sanitizers and what not.
What are some alternatives?
gRPC - The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)
libunifex - Unified Executors
RESTinio - Cross-platform, efficient, customizable, and robust asynchronous HTTP(S)/WebSocket server C++ library with the right balance between performance and ease of use
sobjectizer - An implementation of Actor, Publish-Subscribe, and CSP models in one rather small C++ framework. With performance, quality, and stability proved by years in the production.
lithium - Easy to use C++17 HTTP Server with no compromise on performances. https://matt-42.github.io/lithium
PhotonLibOS - Probably the fastest coroutine lib in the world!
Restbed - Corvusoft's Restbed framework brings asynchronous RESTful functionality to C++14 applications.
coost - A tiny boost library in C++11.
drachtio-freeswitch-modules - A collection of open-sourced freeswitch modules that I use in various drachtio applications
ue5coro - A gameplay-focused C++17/20 coroutine implementation for Unreal Engine 5.
Forkpool - A bleeding-edge, lock-free, wait-free, continuation-stealing tasking library. [Moved to: https://github.com/ConorWilliams/libfork]