グリーン、イエロー、レッドの順に点灯。
package main
import(
"fmt"
"time"
"sync"
)
var mutex sync.Mutex
func A() {
for {
mutex.Lock()
time.Sleep(500 * time.Millisecond)
fmt.Println("green on")
time.Sleep(500 * time.Millisecond)
fmt.Println("green off")
mutex.Unlock()
time.Sleep(1500 * time.Millisecond)
}
}
func B() {
for {
mutex.Lock()
time.Sleep(500 * time.Millisecond)
fmt.Println("yellow on")
time.Sleep(500 * time.Millisecond)
fmt.Println("yellow off")
mutex.Unlock()
time.Sleep(1500 * time.Millisecond)
}
}
func C() {
for {
mutex.Lock()
time.Sleep(500 * time.Millisecond)
fmt.Println("red on")
time.Sleep(500 * time.Millisecond)
fmt.Println("red off")
mutex.Unlock()
time.Sleep(1500 * time.Millisecond)
}
}
func main() {
go A()
go B()
go C()
var input string
fmt.Scanln(&input)
}