Meh*_*Meh 1 c c++ linux semaphore interprocess
我正在将Windows应用程序移植到Linux,我遇到了同步问题.
在Windows中,我使用系统级别的名为mutex来同步对共享内存块的访问.
我如何在Linux中模拟它?我使用semget创建了一个SystemV信号量.问题是它不是可重入的,如果我已经持有它会阻塞,不像在Windows上.我可以为它添加一个引用计数,但是我需要同步访问它,这意味着另一个(这次只适用于当前进程)互斥.
是否有某个类提供了可重入的进程间锁(可能在Boost中)?
顺便说一句,使用文件锁是不可接受的,因为它可能太慢(我需要在两个进程之间进行超低延迟通信).
您可以使用共享(进程间),递归 pthread_mutex_t.创建一个普通的pthread_mutex(存储在共享内存中)并使用pthread_mutexattr_settype该PTHREAD_MUTEX_RECURSIVE标志设置其属性,然后pthread_mutexattr_setpshared使用该PTHREAD_MUTEX_SHARED标志调用.
这将为您提供一个可重入的进程间锁.