20 func rand_between(begin, end int64) int64 {
23 return int64(b[0]) % (end - begin + 1) + begin
26 func (m Monitor) produz(i int) {
29 Println("produzindo:", i)
32 m.rear = (m.rear + 1) % *BUFFER_SIZE
37 func (m Monitor) consome() {
43 m.front = (m.front + 1) % *BUFFER_SIZE
45 Println("\tconsumindo:", v)
50 var BUFFER_SIZE = flag.Int("s", 5, "BUFFER_SIZE")
53 func newMonitor() Monitor {
54 mutex := make(chan int, 1)
55 empty := make(chan int, *BUFFER_SIZE)
57 for i := 0; i < *BUFFER_SIZE; i++ {
65 make(chan int, *BUFFER_SIZE),
66 make([]int, *BUFFER_SIZE),
75 time.Sleep(rand_between(0, SLEEP_TIME) * 10e7)
79 func consumidor(end chan<- int) {
83 time.Sleep(rand_between(0, SLEEP_TIME) * 10e7)
88 var monitor = newMonitor()
92 Println("BUFFER_SIZE=", *BUFFER_SIZE)