Поменяйте местами два разветвленных процесса с семафорами - PullRequest
0 голосов
/ 03 мая 2018

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

1 Ответ

0 голосов
/ 03 мая 2018

Используйте 2 семафора, сначала инициализированные одним, а другим - 0.

Процесс child1:

consume by 1 semaphore 1
do action
increase by 1 semaphore 2

Процесс child2:

consume by 1 semaphore 2
do action
increase by 1 semaphore 1
...