testdata, sync: add sync.Mutex test to testdata/coroutines.go

Этот коммит содержится в:
Jaden Weiss 2020-03-27 19:56:27 -04:00 коммит произвёл Ayke
родитель c54e1cc955
коммит b4815192a6
2 изменённых файлов: 33 добавлений и 1 удалений

28
testdata/coroutines.go предоставленный
Просмотреть файл

@ -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() {

6
testdata/coroutines.txt предоставленный
Просмотреть файл

@ -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