This is related to issue #5045.
We also need to define how primitives in sync package interact with memory model. E.g.
wg.Add happens-before wg.Done, once.Do function execution happens-before any of once.Do
It would be nice if we could document in the sync package that WaitGroup.Add works like
Mutex.Lock and WaitGroup.Wait works like Mutex.Unlock. Then we only have to change the
sync doc, not the memory model doc.