Я хочу создать производителя/потребителя с программой-менеджером в Go. Например: у меня есть 5 producers, 5 consumers and manager
. У производителей есть their own local arrays
, они перебирают их и отправляют элементы менеджеру. У потребителей есть their own local arrays
с информацией, которую потребляют элементы; они отправляют их также менеджеру. У менеджера это own array
, где он хранит какие и сколько элементов есть (например - если производитель отправляет 1 1 2 3 1 2 0
элементов, то массив менеджера выглядит как 1 3 2 1
(один 0, три 1, два 2 и один 3) и он обрабатывает производителей ' и запросы потребителей - помещение элемента в массив (производство) или его удаление (потребление).
Можно ли сделать такую программу на Go? Я уже сделал это в JAVA + CSP с каналами для отправки информации и охранами в менеджере, чтобы определить, какая процедура должна быть выполнена первой, когда производитель и потребитель пытаются обработать один и тот же элемент (например, производитель хочет добавить 1 в массив менеджера и в то же время потребитель хочет потреблять 1).
Любые примеры или советы приветствуются, потому что я не нахожу никакой информации о том, что я хочу сделать. Если нужно, могу дать свой код JAVA+CSP.
ОБНОВЛЕНИЕ. Как насчет синхронизации (чтобы не брать из пустого массива)? Например, если потребитель хочет использовать элемент из массива менеджера, который еще не существует (например, потребитель хочет использовать «3», но у менеджера нет ни одного из них), но у производителя есть этот элемент, и он будет произведен через несколько итерации - как я могу заставить потребителей снова и снова проверять массив менеджеров, пока работа производителей не будет завершена? Должен ли я создавать структуры (или классы) для элементов-потребителей и отмечать, используются они или нет, или в Go есть специальные методы для этого?