Если вы создаете материал, а затем пропускаете его для обработки, то почти наверняка вы можете спроектировать свое приложение так, чтобы использовать передачу сообщений и изоляцию объекта.
Первым шагом будет определение обязанностей, то есть определение того, кто с чем справится. Каждый, кто окружен коробкой.
Вторым шагом будет определение потока информации между вашими ящиками, то есть, если А производит Х ... кто его потребляет?
После этих двух шагов у вас будет простой график с листьями, представляющими рабочих, и стрелками, представляющими сообщения. Каждая стрелка представляет порядок зависимости (то есть, если стрелка идет из От A до B, тогда необходимо выполнить A до B).
С этим вы сможете легко увидеть, какие действия могут быть сделаны параллельными, а какие действия действительно последовательными, в графическом, легко видимом, легко отображаемом виде.
Затем просто внедрите структуру Pipe , чтобы вы могли передавать сообщения между работниками , чтобы у каждого работника был конвейер работы.
На последнем замечании: После того, как оригинальный дизайн сделан, его относительно легко реорганизовать, чтобы улучшить. Например, узлы, выполняющие одну и ту же работу, могут совместно использовать рабочие ТРУБЫ, так что 8 синтаксический анализатор использует из канала «лексического токена» или изменяет его так, чтобы рабочие могли «красть» работу из других рабочих каналов и т. Д.