Synchronization 值0上的信号量同步

Synchronization 值0上的信号量同步,synchronization,posix,semaphore,sysv,Synchronization,Posix,Semaphore,Sysv,在UNIX操作系统中使用SysV信号量,可以实现一种算法,在该算法中,进程等待信号量的值达到值0(有关详细信息,请参阅man semop)。现在,每个人似乎都说最好使用其他同步API,所以我的问题是:如何使用pthreads、POSIX信号量或其他类似API获得相同的行为?如果不可能,我应该担心使用SysV信号量吗 编辑:我指的是一个多线程场景,线程是使用pthreads创建的。Sysv信号量非常适合多进程同步。没有替代品 如果您只有一个进程并且使用线程,那么sysv信号量会有很大的开销,并且在

在UNIX操作系统中使用SysV信号量,可以实现一种算法,在该算法中,进程等待信号量的值达到值0(有关详细信息,请参阅man semop)。现在,每个人似乎都说最好使用其他同步API,所以我的问题是:如何使用pthreads、POSIX信号量或其他类似API获得相同的行为?如果不可能,我应该担心使用SysV信号量吗


编辑:我指的是一个多线程场景,线程是使用pthreads创建的。

Sysv信号量非常适合多进程同步。没有替代品


如果您只有一个进程并且使用线程,那么sysv信号量会有很大的开销,并且在不需要时会消耗全局系统资源。我只需要使用POSIX信号量

编辑了这个问题。我在一个多线程的场景中。我可以使用posix信号量,但我看不到一种明显的方法来获得问题中所述的信号量值0的同步。@Rafflo:您是否试图模拟屏障而不是信号量?也就是说,当障碍达到0时,所有等待的资源都准备好运行。是的,使用障碍可能可以实现同样的效果。然而,我目前在OSX上,pthread中没有内存屏障实现。另一件需要注意的事情是,我不知道信号量将达到的值。。。我只希望线程停止,直到它不是0。