1

我是信号量概念的新手,我查看了一些在线示例,我了解到如果我们使用线程,我们可以使用预定义的元素,例如

/* 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);

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

4

1 回答 1

2

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

sem_open(const char *name, int oflag)

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

于 2013-10-20T17:40:49.727 回答