Я делаю двоичный семафор, разделяемый между несколькими процессами (а не потоками, только процесс), используя POSIX на языке C. если я создать двоичный семафор, используя семафор,Создание двоичного семафора, разделяемого между несколькими процессами (не потоками, только процессом) с использованием POSIX на языке C
typedef struct BIN_SEMA
{
pthread_cond_t cv; /* cond. variable
- used to block threads */
pthread_mutex_t mutex; /* mutex variable
- used to prevents concurrent
access to the variable "flag" */
int flag; /* Semaphore state:
0 = down, 1 = up */
} bin_sema;
я буду иметь возможность использовать его среди всего нитей, но я хочу поделиться между процессами. , так что мой вопрос: Как сделать бинарный семафор, используя подсчетные семафоры?
Зачем вам * когда-либо * создавать двоичный семафор? Сам 'mutex' * * уже является двоичным семафором. Кроме того, если вы синхронизируете отдельные * процессы *, почему бы вам не использовать соответствующие механизмы для этого: 'sem_open()', 'sem_init()', 'sem_wait()', 'sem_post()', 'sem_unlink() '? – EOF
, но ваши предложенные методы предназначены для подсчета семафора. если я принимаю sem_t * sem_id; затем он создает счетный семафор. и мне нужен двоичный семафор. так задал этот вопрос! – KrunalParmar
Gee, интересно, какой семафор я получу, если бы инициировал счет-семафор с начальным значением 1. – EOF