2 ms·
The signaling in this case is typically a shared atomic though not some OS primitive that a process can wake/epoll/etc on?
by bfrog 2y ago
The signaling in this case is typically a shared atomic though not some OS primitive that a process can wake/epoll/etc on?
- loeg 2y agoI believe you could do something with e.g. Linux futexes to support this kind of thing. But in general, polling at the receiver is going to be lower latency / higher throughput.
- elfenpiff 2y agoIn iceoryx2, we use something that we call event concept, which can either use unix-domain sockets so that you have something to select/wake/epoll on or a variant where we use a semaphore stored in shared memory. See: https://github.com/eclipse-iceoryx/iceoryx2/tree/main/iceoryx2-cal/src/event https://github.com/eclipse-iceoryx/iceoryx2/tree/main/iceory... The unix-domain socket has the advantage that you can combine it with external non-iceoryx events, but you pay with a small performance hit. The semaphore event is usually faster. As a user, you can configure your IPC service architecture and use the mechanism that suits you best (but I have to admit that we have not yet documented this in detail). For the zero_copy service variants, it is done here: https://github.com/eclipse-iceoryx/iceoryx2/blob/main/iceoryx2/src/service/zero_copy.rs https://github.com/eclipse-iceoryx/iceoryx2/blob/main/iceory....