diff --git a/atomics/atomics.go b/atomics/atomics.go new file mode 100644 index 0000000..4196591 --- /dev/null +++ b/atomics/atomics.go @@ -0,0 +1,30 @@ +package atomics + +import ( + "fmt" + "sync" + "sync/atomic" + "time" +) + +func Atomics() { + var counter atomic.Uint64 + var wg sync.WaitGroup + + for range 50 { + wg.Add(1) + + go func() { + time.Sleep(100 * time.Millisecond) + for range 1000 { + counter.Add(1) + } + + wg.Done() + }() + } + + wg.Wait() + + fmt.Println("Final tally is", counter.Load()) +} diff --git a/main.go b/main.go index a3e85d5..0f9267a 100644 --- a/main.go +++ b/main.go @@ -14,7 +14,8 @@ package main // import "git.sangeeth.dev/gobyexample/tickers" // import "git.sangeeth.dev/gobyexample/workerpools" // import "git.sangeeth.dev/gobyexample/waitgroups" -import "git.sangeeth.dev/gobyexample/ratelimiting" +// import "git.sangeeth.dev/gobyexample/ratelimiting" +import "git.sangeeth.dev/gobyexample/atomics" func main() { // runes.Runes() @@ -31,5 +32,6 @@ func main() { // tickers.Tickers() // workerpools.WorkerPools() // waitgroups.WaitGroups() - ratelimiting.RateLimiting() + // ratelimiting.RateLimiting() + atomics.Atomics() }