eclipse-ecal / ecal

📦 eCAL - enhanced Communication Abstraction Layer. A high performance publish-subscribe, client-server cross-plattform middleware.
https://ecal.io
Apache License 2.0
832 stars 174 forks source link

Read/Write Lock for eCAL SHM Layer #670

Open FlorianReimold opened 2 years ago

FlorianReimold commented 2 years ago

Is your feature request related to a problem? Please describe. Currently, Many subscribers will lock each other out from the mem file, even though they are only reading it

Describe the solution you'd like A Read-Write lock, so many subscribers can read the memory file at the same time. This actually is the remaining puzzle piece in the SHM Layer. When having Read-Write in place there should be barely any disadvantage any more from combining Zero-Copy + Multibuffering.

FlorianReimold commented 2 years ago

@hannemn: Please confirm if the current implementation can be tested by Rex!

chengguizi commented 1 year ago

Would like to quickly check, the multi-subscribers SHM access feature discribed here, is removed from the 5.12 version?

Very look forward to the zero-copy feature of 5.12. Hope it is still targeted to be implemented in the fashion that multi-buffer (ring buffer) and multi read-access

FlorianReimold commented 1 year ago

Hi @chengguizi,

Not sure what exactly you mean, but the one->many publishing via Shared Memory still exists in 5.12 and there is no intention of removing it. The SHM Layer is one of eCAL's most important features.

This issue is about multiple subscribers to be able to read the data in parallel from the same location (i.e. use a read-only lock). The current implementation simply just locks the memory in a regular mutex style, so the subscribers have to read the memory one-after-another.

Kind regards Florian

chengguizi commented 1 year ago

Hi @FlorianReimold ,

Yes, I am asking when that limitation would be resolved, i.e. read-only lock. Seems that it wont be coming in on 5.12.

rex-schilasky commented 1 year ago

Hi @chengguizi,

yes, unfortunately it didn't make it for 5.12,0 but can be added later in a patch release.