理解和使用信号量的问题

时间:2013-10-20 17:18:57

标签: 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 */
  pthread_mutex_lock(&mutex);

但我的问题是,如果我不使用线程并且只是想使用进程是否有任何预定义的项目,如上面或我应该写信号量和...从头开始??? < / p>

1 个答案:

答案 0 :(得分:2)

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

sem_open(const char *name, int oflag)

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