[英]Can a lock-free atomic write / consistent read operation be achieved on a 4 byte int using System V shared memory across language platforms?
[英]Is it possible to implement a lock free circular queue in System V shared memory (write by C++, read by Python)
無鎖循環隊列(單讀取器單寫入器)依賴於原子寫入和讀取數據的一致視圖。
在最簡單的形式中,您有一個HEAD
指針,由writer-process
更新,以及一個足夠大的數組。 writer-process
寫入新數據,然后更新HEAD
指針。
假設HEAD
指針是一個 32 位整數。 C 提供對該 32 位整數的原子寫操作。 但是如果讀取器進程是 Python ( multiprocessing.shared_memory
+ numpy
),那么 Python 可以假設該 4 字節HEAD
指針的一致視圖,甚至任何保證HEAD
寫入操作將在數據之后發生的情況都不是很明顯被寫入數組。
是否有方便的方法來處理進程和語言之間的問題?
您也在這里混合使用 C 和 C++,但這在某種程度上是可以接受的,因為它們共享一個內存模型。
方便的方法是在 C 中使用 CPython 擴展,使用與共享內存另一側相同的編譯器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.