mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-09-10 14:39:31 +00:00
testdata, sync: add sync.Mutex test to testdata/coroutines.go
This commit is contained in:
Vendored
+27
-1
@@ -1,6 +1,9 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import "time"
|
import (
|
||||||
|
"sync"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
println("main 1")
|
println("main 1")
|
||||||
@@ -51,6 +54,29 @@ func main() {
|
|||||||
println("closure go call result:", x)
|
println("closure go call result:", x)
|
||||||
|
|
||||||
time.Sleep(2 * time.Millisecond)
|
time.Sleep(2 * time.Millisecond)
|
||||||
|
|
||||||
|
var m sync.Mutex
|
||||||
|
m.Lock()
|
||||||
|
println("pre-acquired mutex")
|
||||||
|
go acquire(&m)
|
||||||
|
time.Sleep(2 * time.Millisecond)
|
||||||
|
println("releasing mutex")
|
||||||
|
m.Unlock()
|
||||||
|
time.Sleep(2 * time.Millisecond)
|
||||||
|
m.Lock()
|
||||||
|
println("re-acquired mutex")
|
||||||
|
m.Unlock()
|
||||||
|
println("done")
|
||||||
|
|
||||||
|
time.Sleep(2 * time.Millisecond)
|
||||||
|
}
|
||||||
|
|
||||||
|
func acquire(m *sync.Mutex) {
|
||||||
|
m.Lock()
|
||||||
|
println("acquired mutex from goroutine")
|
||||||
|
time.Sleep(2 * time.Millisecond)
|
||||||
|
m.Unlock()
|
||||||
|
println("released mutex from goroutine")
|
||||||
}
|
}
|
||||||
|
|
||||||
func sub() {
|
func sub() {
|
||||||
|
|||||||
Vendored
+6
@@ -14,3 +14,9 @@ async interface method call
|
|||||||
slept inside func pointer 8
|
slept inside func pointer 8
|
||||||
slept inside closure, with value: 20 8
|
slept inside closure, with value: 20 8
|
||||||
closure go call result: 1
|
closure go call result: 1
|
||||||
|
pre-acquired mutex
|
||||||
|
releasing mutex
|
||||||
|
acquired mutex from goroutine
|
||||||
|
released mutex from goroutine
|
||||||
|
re-acquired mutex
|
||||||
|
done
|
||||||
|
|||||||
Reference in New Issue
Block a user