https://medium.com/@06br9385/understanding-c-threading-a-guide-to-multithreading-and-its-applications-65059ff70961