2013-10-20 29 views
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); 

但我的問題是,如果我不使用線程,只是想利用過程是有像上面或者我應該寫信號燈和任何預定義項。 .. 從頭開始​​???

+0

我不確定操作系統標籤是否適用。 – Basilevs

回答

2

有很多跨進程同步原語,包括命名信號量。通常跨進程原語使用一個名稱來確定唯一的實例。例如,如果您發送一個相同的名稱:

sem_open(const char *name, int oflag) 

它會創建新的或打開現有(從其他進程創建)信號量。您所需要的只是確保該名稱在系統中是唯一的,並且對於您的所有流程都是一樣的。