※ 引述《musashi023 (太阳鱼)》之铭言:
: 嗨盖斯
: 最近下班在研究Qt multithreading, 对于把CPU性能榨干觉得蛮有成就感的
: 就搞了一本 C++ Concurrency in Action 来翻翻
除非特别需要,不要自己打造轮子。现在最普及使用的是OpenMP,资源多,会的人也多。
https://www.openmp.org/resources/openmp-books/
都是好书可以读。尤其"High Performance Parallel Runtimes"可以让你了解基础,也知道parallel programming is HARD。
我自己喜欢的是Intel TBB(Threading Building Blocks),语法比较适合我的用法。
Intel ISPC也是我喜欢的东东,不过这就有点偏门了。
: 前阵子面试
: 刚刚好跟他们主管聊到,怎么让多线程上锁的成本最小化,觉得蛮酷的
: 虽然明白这本来就是多线程程序设计的重点
: 想知道有没有专门在聊这个的书
上锁就输了,如果你的锁复杂,更容易出错。
如何重新解构资料结构去避开锁,如何排列内存是Parallel Programming的重点。false sharing,很常碰到,data thrashing也是头痛问题。
以上都是shared-memory model的问题,但要最高效能无法避免的。
这也是为什么Erlang, goLang,这种message passing尽量避开shared-memory的问题,流行起来。Recommended。