В классе выпускников нам приходилось использовать семафоры для выполнения работы с потоками.
Нам было предложено использовать sem_init
вместе с кучей другой процедуры sem_ *, но нам не была предоставлена много информации о деталях каждого из этих методов sem_ *.
Прототипом (и заголовочным файлом) sem_init
является следующее:
#include <semaphore.h>
int sem_init(sem_t *sem, int pshared, unsigned int value);
но я не понимаю, для чего используется значение pshared. Согласно opengroup.org:
Если аргумент
pshared
имеет ненулевое значение значение, то семафор разделяется между процессами; в этом случае любые процесс, который может получить доступ к семафоруsem
может использоватьsem
для выполненияsem_wait()
,sem_trywait()
,sem_post()
, иsem_destroy()
.
но я думаю, что я не понимаю разницы между словами 1,2, 10, 25, 50000 и т.д. Я думаю, что он говорит, что если значение равно 0, семафор не используется. (Но тогда какая точка?)
Как я могу использовать этот параметр pshared
?