“…The difficulty in writing multithreaded parallel programs has lead to the development of higher-level abstractions for parallel programming, such as task-parallel languages [6,21,13,3], domainspecific parallel languages, pattern libraries that hide lowlevel threads from the programmer [33] and task-parallel programming models [7,31,2,42,42]. Compared to the traditional thread programming, task-parallel programs are easier to write, more portable, and scale better, because the parallelism is not hard-wired into the program, but created at runtime, as needed.…”