Есть ли шаблон для одновременного поиска? - PullRequest
1 голос
/ 06 апреля 2020

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

Концепция:
Бригадир (основной поток) должен искать серию объектов в Большой склад.
Этот склад имеет n этажей. У бригадира есть команда из n рабочих (вспомогательных потоков), каждый с выделенным этажом.
Бригадир получает объект и просит каждого рабочего найти его.
Если рабочий находит его на своем этаже, они возвращаются к мастеру с соответствующей информацией. (местоположение, статус ...)
Затем бригадир перезванивает всем другим работникам (поскольку предмет был найден, больше нет необходимости в поиске) и переходит к следующему объекту.
Если все возвращаются, говоря «Нет, это не на моем этаже», мы можем действовать соответственно. (сообщить о пропущенном продукте руководству ...)

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

1 Ответ

0 голосов
/ 06 апреля 2020

Вы ищете шаблон Observer? Как только рабочий находит предмет и возвращается к Бригадиру. Бригадир должен уведомить всех рабочих о том, что предмет найден, поэтому все потоки прекратят поиск и возврат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...