-
|
I'm implementing an RPC system using iceoryx2 C++, and very satisfied with performance.
|
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 2 replies
-
|
Hey @chuyue86, first of all, I think we need to improve the documentation on our side, so thank you for raising your questions!
It means that every method in the
can be called from multiple threads concurrently. All language bindings use the
No
This is out of date. You can move the
The conclusion was: API bug caused a user misuse. We follow the paradigm that the API shall be easy to use and hard to misuse. Since iceoryx2 is often used in concurrent environments, it can easily happen that a port is accessed from multiple threads or that the payload moves between threads. Therefore, we refactored the language bindings so that they are all based on the threadsafe service variants. But it comes at a cost. Just run the benchmark
No not yet. We will try to add some docs to give you some guidance here. So thanks for the hint! Now some hints just for you ;)
If you want to have a nice debugging experience in a larger project, I would recommend one node per thread, every thread opens the same service and creates its thread local ports. With the
By default, you can transfer samples across threads to read them, but you should not transfer a
This is not necessary - you can share the
Take a look at the iceoryx2 book: https://ekxide.github.io/iceoryx2-book/main/ but it does not yet cover all of your questions. Now, a question from my side: are you able to share with us some details for what you are using iceoryx2 for? We are always happy to get to know the projects that use iceoryx2. |
Beta Was this translation helpful? Give feedback.
-
|
Thank you very much for your response,it has cleared up a problem that I've been struggling with lately. Perhaps it really is time for me to start learning Rust :-) My team is planning to integrate iceoryx2 into our cluster's IPC system. This system is primarily designed for large-scale video decoding and analysis, consisting of various decoupled services. We previously relied on gRPC for communication, but as the system scales, we are now looking into testing iceoryx2 as our underlying IPC layer, as performance is our top priority. I am particularly excited about several items on your roadmap, such as GPU shared memory, memfd, and the zenoh-tunnel integration. We are currently in the early experimental stage. Since our team's primary languages are C/C++, Go, and Python, navigating the iceoryx2 source code can be quite challenging. Therefore, your explanation was incredibly helpful. Thanks again! |
Beta Was this translation helpful? Give feedback.
Hey @chuyue86, first of all, I think we need to improve the documentation on our side, so thank you for raising your questions!
It means that every method in the
Publisher,Subscriber, (pubsub messaging pattern)Listener,Notifier(event messaging pattern)Server,Client(request response messaging pattern)Reader,Writer(blackboard messaging pattern)can be called from multiple threads concurrently. All language bindings use the
{ipc|local}_threadsafe::ServiceRust service type (see: https://github.com/eclipse-iceoryx/iceoryx2/tree/main/examples/rust/service_types) under the hood since languages like C, C++ or Python…