Multicore architectures have become pervasive and this has a profound effect on how we design and develop software. Advances
in technology have resulted in increased parallelism, but not increased clock speed, and exploiting this parallelism is one of th