Я проектирую систему, в которой будут n
производители и m
потребителей, где n и m - числа, и n! = M.Производитель/Потребитель: производитель/потребитель не должен блокировать другого производителя/потребителя
Я хотел спроектировать систему таким образом, что,
- не производитель не должен блокировать другого производителя при производстве
- не потребитель должен блокировать других потребителей, когда не потребляя ни
- производитель, ни потребитель блока друг друга в то время как производство/потребление
Например: в java, если я использую синхронизированное ключевое слово, он будет блокировать соответствующий вызывающий.
Я не уверен, какую структуру данных и алгоритм я должен использовать для реализации этой системы.
Может ли кто-нибудь предоставить мне помощь/указатели на это?
Вам все равно потребуется синхронизация между актерами. Вы можете минимизировать время блокировки потока, делая как можно меньше под блокировкой (будь то блок 'sync' или использование явной реализации« Lock »). –
ConcurrentLinkedQueue поможет –