在多核心上并行计算
假设我们有 NCPU
个 CPU 核心:const NCPU = 4 //对应一个四核处理器
然后我们想把计算量分成 NCPU
个部分,每一个部分都和其他部分并行运行。
这可以通过以下代码所示的方式完成(我们且省略具体参数)
DoAll()
函数创建了一个sem
通道,每个并行计算都将在对其发送完成信号;在一个for
循环中NCPU
个协程被启动了,每个协程会承担1/NCPU
的工作量。每一个DoPart()
协程都会向sem
通道发送完成信号。
链接
Last updated
Was this helpful?