Implemented task-based parallelism using thread pools.
Thread pool implementation is heavily reliant on C++11 features.