Где нам действительно нужен набор System v Семафоры? - PullRequest
0 голосов
/ 20 февраля 2011

Каждый раз, когда я читаю описание semget: The semget() system call returns the semaphore set identifier associated with the argument key., мне интересно, где нам действительно нужен набор семафоров System V.

Я всегда даю параметр nsems как 1, потому что в большинстве случаев мне требуется один семафор. Даже если мне не нужен двоичный семафор, зачем мне создавать набор из 5-6 семафоров (скажем).

и что, если процесс создает набор из 6 семафоров, связанных с одним ключом, а другой пытается выполнить семгетер на том же ключе, запрашивая только 3 семафора. Также не все эти 6 семафоров 6 отдельных двоичных семафоров. Я хочу пить и ищу ответ на этот вопрос в течение 2 месяцев (не постоянно).

Мне очень жаль, если этот вопрос кажется самым глупым, но если я не получу пример реального использования набора семафоров, это сомнение останется в моей памяти. Я пытался найти пример кода C, где кто-то использует набор семафоров, но я не смог его найти.

Я был бы очень благодарен вам, ребята, если бы вы могли помочь мне в этом. Спасибо за тонну заранее.

Ответы [ 2 ]

2 голосов
/ 20 февраля 2011

Я работаю в СУБД, которая использует один семафор для каждого из набора взаимодействующих процессов, которые работают с одними и теми же данными, взаимодействуя через общую память.Необходимость распределять их по одному было бы неприятностью;очень удобно иметь семафор с 20 (или какими-то еще) семафорами.

0 голосов
/ 20 февраля 2011

Наиболее типичная ситуация, которую я знаю для семафора, это когда у вас есть очередь данных, обрабатываемая одним или несколькими потоками обработки.Каждый поток будет уменьшать семафор для каждой записи, удаленной из очереди, и по мере добавления в очередь новых данных семафор увеличивается.Тогда все, что вам нужно сделать, это ждать семафора, а не постоянно запрашивать обновление.

...