demo: c atomic
This commit is contained in:
@@ -1,20 +1,20 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/goplus/llgo/c"
|
|
||||||
"github.com/goplus/llgo/c/sync"
|
"github.com/goplus/llgo/c/sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
var v int64 = 100
|
var v int64 = 100
|
||||||
ret := sync.FetchAndAdd(&v, 1)
|
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)
|
ret = sync.CompareAndXchg(&v, 100, 102)
|
||||||
c.Printf(c.Str("CompareAndXchg: %ld, 100, new: %ld\n"), v, chg)
|
println("ret:", ret, "vs 100, v:", v)
|
||||||
chg = sync.CompareAndXchg(&v, 101, 102)
|
|
||||||
c.Printf(c.Str("new: %ld, CompareAndXchg: %ld, 101\n"), v, chg)
|
ret = sync.CompareAndXchg(&v, 101, 102)
|
||||||
|
println("ret:", ret, "vs 101, v:", v)
|
||||||
|
|
||||||
ret = sync.FetchAndSub(&v, 1)
|
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)
|
sync.CompareAndXchg(&v, 101, 102)
|
||||||
c.Printf(c.Str("%ld\n"), v)
|
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