42 lines
638 B
Go
42 lines
638 B
Go
package main
|
|
|
|
import (
|
|
"github.com/goplus/llgo/c"
|
|
"github.com/goplus/llgo/c/libuv"
|
|
)
|
|
|
|
func ensure(b bool, msg string) {
|
|
if !b {
|
|
panic(msg)
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
loop := libuv.LoopNew()
|
|
defer loop.Close()
|
|
|
|
a := &libuv.Async{}
|
|
r := loop.Async(a, func(a *libuv.Async) {
|
|
println("async callback")
|
|
a.Close(nil) // or loop.Stop()
|
|
})
|
|
ensure(r == 0, "Async failed")
|
|
|
|
go func() {
|
|
println("begin async task")
|
|
c.Usleep(100 * 1000)
|
|
println("send async event")
|
|
ensure(a.Send() == 0, "Send failed")
|
|
}()
|
|
|
|
loop.Run(libuv.RUN_DEFAULT)
|
|
println("done")
|
|
}
|
|
|
|
/*Expected Output:
|
|
begin async task
|
|
send async event
|
|
async callback
|
|
done
|
|
*/
|