Многопроцессорная синхронизация с одним семафором - PullRequest
0 голосов
/ 26 октября 2009

Мы покрываем многопоточное программирование в классе, который я посещаю. Профессор предложил бонусный вопрос, который я безуспешно пытался выяснить:

Каждый из процессов P0, P1, P2 и P3 должен ждать, пока остальные три не пересекут или достичь определенной точки синхронизации в своем коде, и только тогда этот процесс может пересечь свою собственную точку синхронизации.

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

Любые предложения или советы о том, как действовать?

Ответы [ 3 ]

0 голосов
/ 26 октября 2009

Вы немного осветили ограничения, наложенные на ваше решение, но посмотрите Маленькая книга семафоров и прочитайте разделы о барьерах. Это должно дать вам несколько идей.

0 голосов
/ 27 октября 2009

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

0 голосов
/ 26 октября 2009

Просто инициализируйте ваш семафор на -4, если он не двоичный.

...