簡體   English   中英

是否可以在System V共享內存中實現無鎖循環隊列(C++寫,Python讀)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM