go语言实现哲学家进餐
package main
import (
"fmt"
"time"
)
func philosopher(chair chan int, chopstick [5]chan int, i int) {
for {
chair <- 1
chopstick[i] <- i
chopstick[(i+1)%5] <- i
fmt.Printf("Philosopher(%d) is eating\n", i)
<-chopstick[(i+1)%5]
<-chopstick[i]
<-chair
time.Sleep(100000000)
}
}
func main() {
chairs := make(chan int, 4)
var chopsticks [5]chan int
for i:=range chopsticks {chopsticks[i] = make(chan int,1)}
for i:=0; i<5;i++{go philosopher(chairs, chopsticks,i)}
time.Sleep(100000000000)
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-47421.html