A Design Pattern for Component Oriented Development of Agent Based Multithreaded Applications

We present a design pattern which allows for easy multithreaded application development, without requiring parallel programming expertise from potential users. The pattern encourages reusability considering threads as truly independent software components, or agents, while hiding the low level details about safe data sharing and synchronization. Though coarse grained, the solution is perfectly compatible with other more specific multithreading techniques, which could be used in more computationally intensive agents. The approach is based on the classical pipeline pattern, but includes also asynchronous communications and event driven responses, and implements an efficient distributed synchronization and data sharing technique, which minimizes overhead. These features make the pattern specially adequate for real time applications that possibly need to be monitored by an interactive GUI, such as computer vision or signal processing applications, among others.

[1]  Erik Hagersten,et al.  THROOM — Supporting POSIX Multithreaded Binaries on a Cluster , 2003 .

[2]  Jean A. Peperstraete,et al.  Implementing streams on a data flow computer system with paged memory , 1983, ISCA '83.

[3]  James Reinders,et al.  Intel® threading building blocks , 2008 .

[4]  Timothy G. Mattson,et al.  Patterns for parallel programming , 2004 .

[5]  Jonathan Schaeffer,et al.  Why Not Use a Pattern-Based Parallel Programming System? , 2003, Euro-Par.

[6]  Ivar Jacobson,et al.  The Unified Modeling Language User Guide , 1998, J. Database Manag..

[7]  Cristina Nicolescu,et al.  EASY-PIPE - An "Easy to use" parallel image processing environment based on algorithmic skeletons , 2001, Proceedings 15th International Parallel and Distributed Processing Symposium. IPDPS 2001.

[8]  Jasmin Christian Blanchette,et al.  C++ GUI programming with Qt 4 , 2004 .

[9]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[10]  Ginés García-Mateos,et al.  QVision, a Development Framework for Real-time Computer Vision and Image Processing Research , 2008, IPCV.

[11]  Ronald C. Arkin,et al.  Temporal coordination of perceptual algorithms for mobile robot navigation , 1994, IEEE Trans. Robotics Autom..

[12]  Huosheng Hu,et al.  A parallel processing architecture for sensor-based control of intelligent mobile robots , 1996, Robotics Auton. Syst..

[13]  James R. Larus,et al.  Software and the Concurrency Revolution , 2005, ACM Queue.

[14]  Alessandro Farinelli,et al.  Design and Implementation of Modular Software for Programming Mobile Robots , 2006 .