2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Push vs Pull
Сообщение15.11.2015, 22:48 
Аватара пользователя
В паттернах проектирования ПО часто применяются так называемые push- и pull- модели последовательной обработки данных. Под последовательной обработкой данных понимаются цепи обработки информации, в которых каждое звено делает свою работу и передает данные следующему в цепочке.
Push-модель подразумевает вызовы в сторону, сонаправленную с передачей данных. Pull-модель подразумевает вызовы в противоположную сторону. Говоря другими словами, в Push модели каждое звено вызывает следующее, как только у него готовы данные на выход. В Pull модели каждое звено вызывает предыдущее, как только ему нужна следующая порция данных.
Бывают также и звенья-переходники. pull в push конвертируется очень просто и такие модули, как правило легче реализовать. push в pull конвертируется сложнее всего, нуждается в буферизации и обработки underflow-случаев.
Нюансы в построении той или иной архитектуры возникают в первую очередь при необходимости блокировать вызовы. В pull модели, как правило, всвязи с недостатком данных в первом звене (например при приеме по сети). В push модели, как правило, всвязи с невозможностью принять данные в последнем звене (например, при передаче по сети).
Также архитектура усложняется проблемой выделения буферов под output-данные на каждом звене - при обработке большого кол-ва данных необходимо минимизировать дополнительные холостые копирования данных.

Вопрос в том, как лучше организовать последовательную обработку данных. Хочется собрать имеющиеся работы и опыт участников форума в этой области проектирования ПО.

 
 
 [ 1 сообщение ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group