atomic Load/Store
This commit is contained in:
@@ -2,20 +2,24 @@ package main
|
||||
|
||||
import (
|
||||
"github.com/goplus/llgo/c"
|
||||
"github.com/goplus/llgo/c/sync"
|
||||
"github.com/goplus/llgo/c/sync/atomic"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var v int64 = 100
|
||||
sync.FetchAndAdd(&v, 1)
|
||||
c.Printf(c.Str("%ld\n"), v)
|
||||
var v int64
|
||||
|
||||
sync.CompareAndXchg(&v, 100, 102)
|
||||
c.Printf(c.Str("%ld\n"), v)
|
||||
atomic.Store(&v, 100)
|
||||
println("store:", atomic.Load(&v))
|
||||
|
||||
sync.CompareAndXchg(&v, 101, 102)
|
||||
c.Printf(c.Str("%ld\n"), v)
|
||||
atomic.Add(&v, 1)
|
||||
c.Printf(c.Str("v: %ld\n"), v)
|
||||
|
||||
sync.FetchAndSub(&v, 1)
|
||||
c.Printf(c.Str("%ld\n"), v)
|
||||
atomic.CompareAndExchange(&v, 100, 102)
|
||||
c.Printf(c.Str("v: %ld\n"), v)
|
||||
|
||||
atomic.CompareAndExchange(&v, 101, 102)
|
||||
c.Printf(c.Str("v: %ld\n"), v)
|
||||
|
||||
atomic.Sub(&v, 1)
|
||||
c.Printf(c.Str("v: %ld\n"), v)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user