sobjectizer
iceoryx
Our great sponsors
sobjectizer | iceoryx | |
---|---|---|
11 | 8 | |
446 | 1,463 | |
4.3% | 3.6% | |
9.1 | 9.8 | |
7 days ago | 8 days ago | |
C++ | C++ | |
GNU General Public License v3.0 or later | Apache License 2.0 |
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.
sobjectizer
-
SObjectizer Tales - 5. Sending commands
An alternative way is using SObjectizer’s timers.
-
Multiplayer, multithreading, and an actor model in C++
Those who came looking for actor model examples should check out sobjectizer
What you achieved, is handlers decoupling, i.e. when one handler knows nothing about other handler, which leads to good application testability. However, with standard promise/future bases messaging, if performance matters (and it usually does, otherwise why use C++?), i doubt that your implementation overwhelms the performance of specialized actor libraries, like sobjectizer ("batteries included" actors toolbox) or rotor (DIY-like actor constructor set; disclaimer: I'm the author of it).
-
What are some candidate libraries for inter-thread communication like message boxes or event systems?
Hi! I'm a maintainer of SObjectizer project and would like to answer any SObjectizer-related questions. However, I don't know is it the right place to speak about SObjectizer or it could be considered as an advertisement. Anyway, if you want to ask anything about SObjectizer you can do it via GitHub issues.
In sobjectizer the ownership is held by "environment" , while in rotor each thread must held appropriate context, when actor environment is running.
I was looking at SObjectizer as a message box provider, and it seems well designed and the API is nice, but I'm not sure how to go about retro-fitting it into an existing application, since all my threads already exist and I don't really want to change them all into SO "Agents", and I also don't see how to integrate the Dispatcher. I think it's worth a look though, if anyone with experiecne can confirm it is appropriate.
-
Sender and Receiver implementations
May be actor frameworks like caf, sobjectizer or rotor is something, that you are looking for.
-
Italian C++ Meetup: SObjectizer, a C++ tool for Concurrent Programming (Nicolai Grodzitski)
SObjectizer on GitHub
iceoryx
- IPC communication between rust, c++, and python
-
iceoryx v2.0.0 released - a true zero-copy C++ middleware
full release notes: https://github.com/eclipse-iceoryx/iceoryx/blob/master/doc/website/release-notes/iceoryx-v2-0-0.md
homepage: https://iceoryx.io
-
Shadesmar: Fast C++ IPC using shared memory
Now make it zero-copy :) Or just use iceoryx
True, a better comparison for Shadesmar would be with libraries like iceoryx and alephzero.
-
Announcing Eclipse iceoryx 1.0.0
github: https://github.com/eclipse-iceoryx/iceoryx
The setup for the measurement can be found here https://github.com/eclipse-iceoryx/iceoryx/tree/master/iceoryx_examples/iceperf. You are right, the latency was achieved by spinning on the lock-free receiver queue. Basically the applications are playing ping pong as fast as they can. Lately we introduced a so called WaitSet and Listener which would do a blocking wait on a semaphore. Unfortunately we didn't manage to update the performance example in time for the release to also include measurements with these constructs. The current measurements should be seen as a mean of showcase of zero-copy transfer since the latency is constant in time regardless the payload size. We will update the measurements with these constructs and also add some more measures like mean deviation and such stuff.
This is the tracking issue for Windows support https://github.com/eclipse-iceoryx/iceoryx/issues/33
What are some alternatives?
cyclonedds - Eclipse Cyclone DDS project
eCAL - Please visit the new repository: https://github.com/eclipse-ecal/ecal
ecal - 📦 eCAL - enhanced Communication Abstraction Layer. A high performance publish-subscribe, client-server cross-plattform middleware.
alephzero
rmw_iceoryx - rmw implementation for iceoryx
concurrencpp - Modern concurrency for C++. Tasks, executors, timers and C++20 coroutines to rule them all
areg-sdk - AREG is an asynchronous Object RPC framework to simplify multitasking programming by blurring borders between processes and treating remote objects as if they coexist in the same thread.
rotor - Event loop friendly C++ actor micro-framework, supervisable
ruby-dbus - A Ruby binding for DBus
shadesmar - Fast C++ IPC using shared memory
isaac_ros_apriltag - Hardware-accelerated Apriltag detection and pose estimation.