背景
初体验
// 队列
jobs := make(chan string)
// 创建线程池
for i := 0; i < 5; i++ {
go func(id int) {
for symbol := range jobs {
// symbol <- jobs
message := processSymbol(symbol)
logger.Println(fmt.Sprintf("[thread %d] %s : %s", id, symbol, message))
if len(message) > 0 {
lock.Lock()
resultList.PushBack(message)
lock.Unlock()
}
wg.Done()
}
}(i)
}
// 将任务发送到线程池
symbols := utils.GetSymbols()
// logger.Println(symbols)
for j := symbols.Front(); j != nil; j = j.Next() {
symbol := j.Value.(string)
// logger.Println("--> " + symbol)
wg.Add(1)
jobs <- symbol
}
close(jobs)
wg.Wait()
参考