demo: c atomic

This commit is contained in:
xushiwei
2024-06-16 15:20:29 +08:00
parent b5507f79e4
commit f7c322c311
2 changed files with 10 additions and 7 deletions

View File

@@ -1,20 +1,20 @@
package main
import (
"github.com/goplus/llgo/c"
"github.com/goplus/llgo/c/sync"
)
func main() {
var v int64 = 100
ret := sync.FetchAndAdd(&v, 1)
c.Printf(c.Str("FetchAndAdd: %ld, new: %ld\n"), ret, v)
println("ret:", ret, "v:", v)
chg := sync.CompareAndXchg(&v, 100, 102)
c.Printf(c.Str("CompareAndXchg: %ld, 100, new: %ld\n"), v, chg)
chg = sync.CompareAndXchg(&v, 101, 102)
c.Printf(c.Str("new: %ld, CompareAndXchg: %ld, 101\n"), v, chg)
ret = sync.CompareAndXchg(&v, 100, 102)
println("ret:", ret, "vs 100, v:", v)
ret = sync.CompareAndXchg(&v, 101, 102)
println("ret:", ret, "vs 101, v:", v)
ret = sync.FetchAndSub(&v, 1)
c.Printf(c.Str("FetchAndSub: %ld, new: %ld\n"), ret, v)
println("ret:", ret, "v:", v)
}

View File

@@ -15,4 +15,7 @@ func main() {
sync.CompareAndXchg(&v, 101, 102)
c.Printf(c.Str("%ld\n"), v)
sync.FetchAndSub(&v, 1)
c.Printf(c.Str("%ld\n"), v)
}