During this week, I learned about race conditions in multithreaded programs and the techniques used to avoid them. I started with a banking example where multiple threads update a shared counter ...