Использование семафоров в C? - PullRequest
0 голосов
/ 08 декабря 2011

Например, у меня есть процесс машиниста (x), где x может представлять различные инструменты, которые есть у машиниста.Есть три типа машинистов, один с отверткой, другой с молотком, другой с кистью.

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

Мне нужно написать менеджер процессов, используя семафоры, ДЕЙСТВИТЕЛЬНО смущенный: /

В основном янужен псевдокод

Ответы [ 2 ]

0 голосов
/ 08 декабря 2011

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

0 голосов
/ 08 декабря 2011

Я предполагаю, что у вас есть несколько роботов, каждый в своем собственном потоке, создающем продукт?

Может быть что-то вроде этого: каждый робот ждет и резервирует отвертку, затем делает то же самое для молотка и т. Д.После сборки продукта отпустите все инструменты.Одним из важных соображений является резервирование инструментов в последовательном порядке;в противном случае вы рискуете тупиковыми ситуациями.

...