effective modern c++(条款31-42)lambda表达式,并发API,微调
- 条款31--避免默认捕捉模式
- 条款32--使用初始化捕捉将对象移入闭包
- 条款33--对auto&&型别的形参使用decltype,以std::forward辅之
- 条款34--优先选用lambda式,而非std::bind
- 条款35--优先选用基于任务而非基于线程的程序设计
- 条款36--如果异步是必要的,则指定std::launch::async
- 条款37--使std::thread型别对象在所有路径皆不可联结
- 条款38--对变化多端的线程句柄析构函数行为保持关注
- 条款39--考虑针对一次性事件通信使用void为模板型别实参的期值
- 条款40--对并发使用std::atomic,对特种内存使用volatile
- 条款41--针对可复制的形参,在移动成本低并且一定会被复制的前提下,考虑将其按值传递
- 条款42--考虑置入而非插入
条款31–避免默认捕捉模式
按引用的默认捕捉会导致空悬指针的问题
按值的默认捕捉易受空悬指针的影响(尤其是this),并会误导人们认为lambda式是自洽的
条款32–使用初始化捕捉将对象移入闭包
c++14的初始化捕捉将对象移入闭包
c++11中,经由手工实现的类或std::bind去模拟初始化捕捉
条款33–对auto&&型别的形参使用decltype,以std::forward辅之
条款34–优先选用lambda式,而非std::bind
可读性更好,表达力更强,运行效率较高,
条款35–优先选用基于任务而非基于线程的程序设计
高级接口与低级接口