https://medium.com/@luisalexandre.rodrigues/c-parallel-programming-working-with-thread-part-ii-b73de4e0910b