我將一個Windows應用程序移植到Linux,並且我有一個同步問題。Linux進程間可重入信號量
在Windows中,我使用系統級名爲mutex來同步對共享內存塊的訪問。
我該如何在Linux中進行模擬?我用semget創建了一個SystemV信號量。問題是,它不是可重入的,如果我已經擁有它,它將會阻塞,不像在Windows上。我可以爲它添加一個引用計數,但是接下來我需要同步訪問,這意味着另一個(僅限當前進程)互斥量。
是否有一個類提供了一個可重入的進程間鎖定(可能在升壓)?
順便說一句,使用文件鎖定是不可接受的,因爲它可能會太慢(我需要兩個進程之間的超低延遲通信)。
引用計數大概是每個線程,所以如果你使用原子操作來遞增/遞減它,你不需要同步對它的訪問。 – atomice 2009-11-17 14:13:35