test: move cchan/cchansel into runtime/_test

This commit is contained in:
Li Jie
2025-01-08 15:03:58 +08:00
parent 1ed99c2574
commit 255cce4f9a
2 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
package main
import (
"unsafe"
"github.com/goplus/llgo/runtime/internal/runtime"
)
const (
eltSize = int(unsafe.Sizeof(0))
)
func fibonacci(c, quit *runtime.Chan) {
x, y := 0, 1
for {
isel, _ := runtime.Select(
runtime.ChanOp{C: c, Send: true, Val: unsafe.Pointer(&x), Size: int32(eltSize)},
runtime.ChanOp{C: quit},
)
if isel == 0 {
x, y = y, x+y
} else {
println("quit")
return
}
}
}
func main() {
c := runtime.NewChan(eltSize, 0)
quit := runtime.NewChan(eltSize, 0)
go func() {
for i := 0; i < 10; i++ {
val := 0
runtime.ChanRecv(c, unsafe.Pointer(&val), eltSize)
println(val)
}
runtime.ChanClose(quit)
}()
fibonacci(c, quit)
}