atomic Load/Store

This commit is contained in:
xushiwei
2024-06-16 16:35:46 +08:00
parent fbd15a81b4
commit 340b5bd165
9 changed files with 236 additions and 156 deletions

View File

@@ -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)
}