Comments (5)
@elBoberido what are your insights on this?
from iceoryx2.
@elfenpiff there is an entry on the ekxide roadmap to explore an inter-process executor based on async so this is definitely something we should have. I'm a newbie when it comes to Rust async but I've often read that async is kind of contentious and that one often has to decide whether to have an async API or a non-async one. Nevertheless, we need to explore this.
from iceoryx2.
This would be very useful 👍
from iceoryx2.
It is hard to have an API both sync and async, but it is doable if you have traits at the right places with the same primitives. For example diesel has diesel-async which reuses the same primitives but has an async layer for networking.
from iceoryx2.
iceoryx2 provides events to support push notifications so that you are not forced to perform busy waiting, see: https://github.com/eclipse-iceoryx/iceoryx2/tree/main/examples/rust/event
The rough idea is that you use two services, one with a pub/sub and one with an event messaging pattern. Whenever you send your messages via pub/sub, you can signal an event, and the other process will wake up and consume the messages.
This is a bit more manual work but allows you also to be more performant since you can really define your conditions when to trigger across processes. For instance, if you want to trigger only when process P has received 2 messages via service S1 and 4 messages via service S2.
With iceoryx (CPP version) we baked this into the publisher, the API was easier to use but with the downside that in the above case process P add false wakeups that cost a lot of performance.
@Sytten @stjepangolemac would this be something that would help you (temporarily) or would you still require an async API?
Nevertheless, we are aware of the need for an async API and it has a high prio on our side. Currently, we are working on feature parity with old cpp iceoryx and C/C++ bindings - this should be finished soon and then we try to revisit async.
from iceoryx2.
Related Issues (20)
- Merge `Iox2` with `Node`
- Node does not detect itself as alive
- Remove rule surpressions in `clang-tidy` when C++ API stubs are implemented
- Configurable log level in benchmarks.
- generate C++ documentation
- Create clippy rules for the FFI naming conventions
- Mem-leak in `iceoryx2_bb_posix::Directory::contents()` on failure
- `Publisher::loan_uninit` has unclear behavior HOT 8
- Log macros shall not return value
- Rename ServiceUUID into ServiceID and use strong type
- 'cdylib' and integrationtests leads to warnings and build failures
- Move iceoryx2 cxx addendum headers into iceoryx
- Potential dead-lock in `FileDescriptorTests::file_descriptor_set_add_and_remove_works`
- Publisher does not always follow `UnableToDeliverStrategy::Block` strategy HOT 5
- Use callback strategy from `Node::list` in `Service::list`
- Dead lock in `UnableToDeliverStrategy::Block` when Subscriber is removed while Publisher Blocks
- Zero-Copy IPC between Native Windows Applications and Linux Containers on WSL HOT 3
- Cross compilation may corrupt `scandir.c` with bindgen
- `sendmsg` fails with EFAULT in sending unix domain socket file descriptors
- Rename `{zero_copy|process_local}::Service` into `{ipc|local}::Service`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from iceoryx2.