Different ways to generate IDs
Managing goroutines execution order with conditions
Do once for all
an easier and cleaner way to control concurrency
Bounded concurrency with golang
Locking with golang