C++异步编程最佳实践
Mapreduce问题
多个数据,进行同类型计算,最后汇总结果,怎样用C++解锁此类问题?
这个最简单了,单线程循环处理每份数据好了。
这有何难,创建一块地方,针对每份数据创建个线程执行计算,将结果写入先前创建的数据的对应地方,等各线程结束,完活。
上面的说法都对,只是不够好。
对于单线程处理,在这个多核时代,未免大马拉小车,有点浪费CPU。当问题规模变大,你准备花多长时间计算。
对于多线程这个说法,从策略上来说,没有问题。但问题是你不得不手动启动线程,把结果放到共享内存里,通过thread.join()等待结束。这点操作难度,对于我大C++开发来说算啥,分分钟就搞定了。但问题又来了,现在你的老板问你要针对单份数据的处理函数,返回结果。
呵呵,原来的单份数据处理函数,十有八九长成这样:
RetType deal(Indata t,Retdata&