一个典型的案例all goroutines are asleep, deadlock!
,但无法弄清楚
我正在解析维基词典 XML 转储来构建单词数据库。我将每篇文章的文本的解析推迟到一个 Goroutine,希望它能加快这个过程。
它有 7GB,在我的机器上串行执行时,处理时间不到 2 分钟,但如果我可以利用所有内核,为什么不呢。
一般来说,我是线程新手,遇到错误all goroutines are asleep, deadlock!
。
这是怎么回事?
这可能根本没有性能,因为它使用无缓冲的通道,因此所有 goroutine 实际上最终都会串行执行,但我的想法是学习和理解线程,并衡量不同替代方案所需的时间:
无缓冲通道
不同大小的缓冲通道
一次只调用尽可能多的 goroutineruntime.NumCPU()
我的伪代码代码摘要:
三国纷争
慕莱坞森
慕仙森
相关分类