geteilt von: https://programming.dev/post/54554551

iceoryx2 provides zero-copy inter-process communication mechanisms based on shared memory and data structures that are modified concurrently by multiple processes.

One of the key operations in these algorithms is a memory copy using core::ptr::copy. However, this results in undefined behavior if one process reads the data while another process writes to it concurrently. Even if our lock-free algorithm reliably detects such a race, iceoryx2 cannot depend on undefined behavior in a safety-critical system.

This blog post introduces our solution: a byte-wise atomic wrapper that enables well-defined concurrent copy operations. It also shows how it can be used to implement a simple sequence lock.

Note: I am not the original author of the blog post. Since the author does not have a programming.dev account, I am posting it on her behalf.

 

iceoryx2 provides zero-copy inter-process communication mechanisms based on shared memory and data structures that are modified concurrently by multiple processes.

One of the key operations in these algorithms is a memory copy using core::ptr::copy. However, this results in undefined behavior if one process reads the data while another process writes to it concurrently. Even if our lock-free algorithm reliably detects such a race, iceoryx2 cannot depend on undefined behavior in a safety-critical system.

This blog post introduces our solution: a byte-wise atomic wrapper that enables well-defined concurrent copy operations. It also shows how it can be used to implement a simple sequence lock.

Note: I am not the original author of the blog post. Since the author does not have a programming.dev account, I am posting it on her behalf.

 

geteilt von: https://programming.dev/post/52041408

Have you ever thought about sharing data across language boundaries without serialization? This blog post highlights the challenges behind this endeavor and how they can be overcome.

Note: I'm not the original author of the blog post, but since the author does not have a programming.dev account, I post it on his behalf.

 

geteilt von: https://programming.dev/post/52041408

Have you ever thought about sharing data across language boundaries without serialization? This blog post highlights the challenges behind this endeavor and how they can be overcome.

Note: I'm not the original author of the blog post, but since the author does not have a programming.dev account, I post it on his behalf.

[–] [S] 2 points 5 months ago

@kibiz0r@midwest.social sorry for the late reply. I'm not that familiar with CRDTs but what I understand, the blackboard is not a direkt match. It is intended for data that does not change or at least only rarely change. Contrary to the other messaging pattern like publish-subscribe or requrest-response, the blackboard does copy on access. This means, it is ideal for things like providing a configuration to other processes or other small data.

  • source
  • parent
  • context
  •  

    geteilt von: https://programming.dev/post/50633812

    Hello everyone

    We released iceoryx2 v0.9 tonight. With the release, we are pushing more and more iceoryx2 into the embedded world. We have written a test runner that runs on std and no_std environments, stabilized the decentralized recovery, and added a ton of quality of life improvements.

    For those who haven’t heard of it yet: iceoryx2 is a zero-copy inter-process communication library.

    The basic idea is: instead of serializing data, copying it through sockets, pipes, message queues, or some broker process, iceoryx2 lets processes communicate via shared memory. That makes it useful when you care about latency, throughput, or moving large amounts of data between processes without wasting CPU cycles on copies.

    It supports C, C++, Python, Rust, and C#, and runs on Linux, macOS, Windows, FreeBSD, and QNX, with experimental support for Android and VxWorks.

    It is not limited to plain pub/sub either. iceoryx2 supports publish-subscribe, events, request-response streams, and a blackboard pattern, which is basically a key-value repository directly in shared memory.

    The architecture is fully decentralized: no central broker, no daemon that everything depends on, and no single process that becomes the obvious bottleneck or failure point.

    Happy to answer questions about the release, the no_std work, or zero-copy IPC in general.

     

    geteilt von: https://programming.dev/post/50633812

    Hello everyone

    We released iceoryx2 v0.9 tonight. With the release, we are pushing more and more iceoryx2 into the embedded world. We have written a test runner that runs on std and no_std environments, stabilized the decentralized recovery, and added a ton of quality of life improvements.

    For those who haven’t heard of it yet: iceoryx2 is a zero-copy inter-process communication library.

    The basic idea is: instead of serializing data, copying it through sockets, pipes, message queues, or some broker process, iceoryx2 lets processes communicate via shared memory. That makes it useful when you care about latency, throughput, or moving large amounts of data between processes without wasting CPU cycles on copies.

    It supports C, C++, Python, Rust, and C#, and runs on Linux, macOS, Windows, FreeBSD, and QNX, with experimental support for Android and VxWorks.

    It is not limited to plain pub/sub either. iceoryx2 supports publish-subscribe, events, request-response streams, and a blackboard pattern, which is basically a key-value repository directly in shared memory.

    The architecture is fully decentralized: no central broker, no daemon that everything depends on, and no single process that becomes the obvious bottleneck or failure point.

    Happy to answer questions about the release, the no_std work, or zero-copy IPC in general.

    view more: next ›