Operating system 理解和使用信号量的问题

Operating system 理解和使用信号量的问题,operating-system,semaphore,Operating System,Semaphore,我对信号量的概念很陌生,我看过一些在线示例,我了解到如果我们使用线程,我们可以使用预定义的元素,比如 /* The mutex lock */ pthread_mutex_t mutex; /* the semaphores */ sem_t full, empty; 为了使用它们,我们可以再次利用预定义的功能,如: /* acquire the empty lock */ sem_wait(&empty); /* acquire the mutex lock */ p

我对信号量的概念很陌生,我看过一些在线示例,我了解到如果我们使用线程,我们可以使用预定义的元素,比如

/* The mutex lock */
pthread_mutex_t mutex;

/* the semaphores */
sem_t full, empty;
为了使用它们,我们可以再次利用预定义的功能,如:

 /* acquire the empty lock */
  sem_wait(&empty);
  /* acquire the mutex lock */
  pthread_mutex_lock(&mutex);

但我的问题是,如果我不使用线程,而只想使用进程,是否有任何像上面那样的预定义项,或者我应该编写信号量并。。。从头开始?

有很多跨进程同步原语,包括命名信号量。通常跨进程原语使用名称来确定唯一实例。例如,如果您将相同的名称发送到:

sem_open(const char *name, int oflag)

它将创建新的或打开现有的(从其他进程创建的)信号量。您所需要的只是确保名称在系统中是唯一的,并且对于所有进程都是相同的。

我不确定操作系统标签是否适用。