Go
Lチカ

goでLチカの練習 その2

More than 3 years have passed since last update.

グリーン、イエロー、レッドの順に点灯。

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)
}