【发布时间】:2014-08-05 23:46:30
【问题描述】:
我希望 for 循环使用 go 例程并行。我尝试使用频道,但没有奏效。我的主要问题是,我想在继续之前等待所有迭代完成。这就是为什么在它不起作用之前简单地写go。我尝试使用通道(我认为是错误的方式),但这让我的代码更慢
func createPopulation(populationSize int, individualSize int) []Individual {
population := make([]Individual, populationSize)
//i want this loop to be work parallel
for i := 0; i < len(population); i++ {
population[i] = createIndividual(individualSize)
}
return population
}
func createIndividual(size int) Individual {
var individual = Individual{make([]bool, size), 0}
for i := 0; i < len(individual.gene); i++ {
if rand.Intn(2)%2 == 1 {
individual.gene[i] = true
} else {
individual.gene[i] = false
}
}
return individual
}
我的结构如下所示:
type Individual struct {
gene []bool
fitness int
}
【问题讨论】:
-
您在尝试不同版本时设置了环境变量 GOMAXPROCS 吗?
标签: for-loop concurrency go