Abstract:
It is becoming increasingly difficult to find any modern computing device targeted for consumers that does not feature a processor with at least two processing cores. Multi-core devices have become the norm. However, the increase in computational power has not been completely met by an equal increase in the usage of the available computing power. Creating an application that utilises multiple cores on a device is fraught with difficulties. There are so many concepts for a programmer to learn before being able to effective program for such a device: synchronisation, scheduling, locks, mutexes, latches, monitors - just to name a few. All these concepts serve only as a barrier to entering the world of parallel programming. Parallel Task is an enhancement to the Java programming language that seeks to unite parallel programming and object-oriented programming via simple but effective tasking constructs. This thesis examines how suitable these constructs are for common parallelisation problems. The method of determining common problems is based on summarising parallelisation problems described in academic literature into abstract concepts known as design patterns. Each pattern represents a class of problems with a general solution. It is the implementation of these solutions that Parallel Task is tested against. Where Parallel Task fails to efficiently implement a pattern, new concepts are introduced to enable developing against the pattern. It was found that Parallel Task is a viable framework for general parallel programming. Although it provides a higher level of abstraction than what most current programming languages provide, any change in performance compared to a lower-level implementation was found to be acceptable. It was also found that Parallel Task is scalable to machines with more processing cores than what most consumer devices have, demonstrating it can be used effectively even in the future.