mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-07-26 14:48:40 +00:00
612a38e363
This fixes bug https://github.com/tinygo-org/tinygo/issues/4874.
68 lines
1.1 KiB
Go
68 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"runtime"
|
|
"time"
|
|
)
|
|
|
|
func init() {
|
|
println("called init")
|
|
go adder()
|
|
}
|
|
|
|
//go:wasmimport tester callTestMain
|
|
func callTestMain()
|
|
|
|
func main() {
|
|
// main.main is not used when using -buildmode=c-shared.
|
|
callTestMain()
|
|
}
|
|
|
|
//go:wasmexport hello
|
|
func hello() {
|
|
println("hello!")
|
|
}
|
|
|
|
//go:wasmexport add
|
|
func add(a, b int32) int32 {
|
|
println("called add:", a, b)
|
|
addInputs <- a
|
|
addInputs <- b
|
|
return <-addOutput
|
|
}
|
|
|
|
var addInputs = make(chan int32)
|
|
var addOutput = make(chan int32)
|
|
|
|
func adder() {
|
|
for {
|
|
a := <-addInputs
|
|
b := <-addInputs
|
|
time.Sleep(time.Millisecond)
|
|
addOutput <- a + b
|
|
}
|
|
}
|
|
|
|
//go:wasmimport tester callOutside
|
|
func callOutside(a, b int32) int32
|
|
|
|
//go:wasmexport reentrantCall
|
|
func reentrantCall(a, b int32) int32 {
|
|
println("reentrantCall:", a, b)
|
|
result := callOutside(a, b)
|
|
println("reentrantCall result:", result)
|
|
return result
|
|
}
|
|
|
|
// Test for bug: https://github.com/tinygo-org/tinygo/issues/4874
|
|
//
|
|
//go:wasmexport goroutineExit
|
|
func goroutineExit() {
|
|
go func() {
|
|
time.Sleep(time.Second * 10)
|
|
println("goroutineExit: exiting goroutine")
|
|
}()
|
|
runtime.Gosched()
|
|
println("goroutineExit: exit")
|
|
}
|