https://medium.com/@nagarjun_nagesh/understanding-sync-cond-and-atomic-operations-in-go-when-and-how-to-use-them-26f825b4093f