demo: c atomic
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user