RS
wg.Add
в цикле а не перед циклом?2. для чисел есть https://golang.org/pkg/sync/atomic/ они эффективнее mutex’ов
3. а где именно race? может он в 17 строке при вызове
callback()
?4. зачем выписывать
var isDone bool = false
если можно воспользоваться type inference: isDone := false
? 🙂