testdata, sync: add sync.Mutex test to testdata/coroutines.go
Этот коммит содержится в:
родитель
c54e1cc955
коммит
b4815192a6
2 изменённых файлов: 33 добавлений и 1 удалений
28
testdata/coroutines.go
предоставленный
28
testdata/coroutines.go
предоставленный
|
@ -1,6 +1,9 @@
|
|||
package main
|
||||
|
||||
import "time"
|
||||
import (
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
println("main 1")
|
||||
|
@ -51,6 +54,29 @@ func main() {
|
|||
println("closure go call result:", x)
|
||||
|
||||
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() {
|
||||
|
|
6
testdata/coroutines.txt
предоставленный
6
testdata/coroutines.txt
предоставленный
|
@ -14,3 +14,9 @@ async interface method call
|
|||
slept inside func pointer 8
|
||||
slept inside closure, with value: 20 8
|
||||
closure go call result: 1
|
||||
pre-acquired mutex
|
||||
releasing mutex
|
||||
acquired mutex from goroutine
|
||||
released mutex from goroutine
|
||||
re-acquired mutex
|
||||
done
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче