Pattern languages of program design
Half-sync/half-async: an architectural pattern for efficient and well-structured concurrent I/O
Pattern languages of program design 2
Active object: an object behavioral pattern for concurrent programming
Pattern languages of program design 2
Concurrent design patterns for resource sharing
Proceedings of the conference on TRI-Ada '97
Pattern languages of program design 3
Concurrent Programming in Java. Second Edition: Design Principles and Patterns
Concurrent Programming in Java. Second Edition: Design Principles and Patterns
Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with UML
Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with UML
Software Architecture in Practice
Software Architecture in Practice
Ajax Design Patterns
New Horizons in Multicore Software Engineering
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
Towards software performance engineering for multicore and manycore systems
ACM SIGMETRICS Performance Evaluation Review
Hi-index | 0.00 |
With the prevalent application of multi-core CPUs, software practitioners are facing the challenge of developing high quality multi-threaded programs. Applying concurrency design patterns is one of the best practices in multi-core software engineering. We comprehensively surveyed 28 concurrency design patterns, and provided a problem-oriented guide that navigates software developers towards the "right" pattern(s) with minimal search/reading effort. The guide also illustrates the relationship between concurrency design patterns and the quality attributes they address. Additionally, further investigation was conducted on how these concurrency design patterns implement quality attributes tactics. We present a mapping between surveyed concurrency design patterns and the tactics for two important quality attributes: performance and modifiability. The results of these studies provide an insight into concurrency design patterns for software developers who are seeking appropriate or improved solutions to multi-threaded software development issues.