blob: adc049d3fa7edc1502e50b9f0e5f6439a75d5a31 [file] [log] [blame]
package main
func (this Barrier) Load(consumer int) int64 {
minimum := MaxSequenceValue
for i := 0; i < len(this); i++ {
cursor := this[i].Load()
// if len(this) > 1 {
// fmt.Printf("Producer:: Consumer %d Barrier: %d\n", i+1, cursor)
// } else {
// fmt.Printf("\t\t\t\t\t\t\t\t\tConsumer %d:: Producer Barrier: %d\n", consumer, cursor)
// }
if cursor < minimum {
minimum = cursor
}
}
return minimum
}
func NewBarrier(upstream ...*Sequence) Barrier {
this := Barrier{}
for i := 0; i < len(upstream); i++ {
this = append(this, upstream[i])
}
return this
}
type Barrier []*Sequence