Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
package main
import (
"fmt"
"os"
"runtime"
"strconv"
)
const (
NUMELEM = 1e8
)
func main() {
megaqueue := make(chan int, 1000)
n, _ := strconv.Atoi(os.Args[1])
maxIdx := NUMELEM / n
runtime.GOMAXPROCS(n * 2)
endChan := make(chan int, n)
for i := 0; i < n; i++ {
go func() {
for j := 0; j < maxIdx; j++ {
megaqueue <- 1
}
}()
go func() {
j := 0
for ; j < maxIdx; j++ {
<-megaqueue
}
endChan <- j - 1
}()
}
total := 0
for i := 0; i < n; i++ {
total += <-endChan
}
fmt.Println(NUMELEM, " vs. ", total)
}
tests/unit/queue/reader_writer_mt.cppcdsu-queue -t=Queue_ReaderWriter[Queue_ReaderWriter]
Lock-free структуры данных. Очередной трактат