2021年3月16日

摘要: 读完了C++并发编程实战,记录一下对memory order的理解。 1. C++原子操作的内存顺序概述 memory order主要有以下几种: memory_order_relaxed只提供对单个atomic变量的原子读/写,不和前后语句有任何memory order的约束关系。 memory_ 阅读全文
posted @ 2021-03-16 18:09 tycoon3 阅读(975) 评论(0) 推荐(0)
摘要: CPU上下文切换是保证 Linux系统正常工作的一个核心功能,按照不同场景,可以分为进程上下文切换、线程上下文切换和中断上下文切换。究竟怎么分析CPU上下文切换的问题。 过多的上下文切换,会把CPU时间消耗在寄存器、内核栈以及虚拟内存等数据的保存和恢复上,缩短进程真正运行的时间,成了系统性能大幅下降 阅读全文
posted @ 2021-03-16 17:49 tycoon3 阅读(806) 评论(0) 推荐(0)
摘要: https://zhuanlan.zhihu.com/p/78388827 阅读全文
posted @ 2021-03-16 16:34 tycoon3 阅读(58) 评论(0) 推荐(0)
摘要: 在 16 位环境下,short 的长度为 2 个字节,int 也为 2 个字节,long 为 4 个字节。16 位环境多用于单片机和低级嵌入式系统,在PC和服务器上已经见不到了。对于 32 位的 Windows、Linux 和 Mac OS,short 的长度为 2 个字节,int 为 4 个字节, 阅读全文
posted @ 2021-03-16 15:34 tycoon3 阅读(862) 评论(0) 推荐(0)
摘要: CPU 亲和性 Linux 可以运行在多处理器的机器上,为了维持多个CPU之间的负载均衡,线程可能会被OS调度到其它CPU上,这种情况下线程就无法利用原先CPU上边的缓存了,也就降低了CPU cache的命中率了。所谓的CPU亲和性,就是让线程在指定的CPU上长时间运行而不被调度到其它CPU上边,以 阅读全文
posted @ 2021-03-16 11:43 tycoon3 阅读(164) 评论(0) 推荐(0)
摘要: 为什么需要 Memory Order 如果不使用任何同步机制(例如 mutex 或 atomic),在多线程中读写同一个变量,那么,程序的结果是难以预料的。简单来说,编译器以及 CPU 的一些行为,会影响到程序的执行结果: 即使是简单的语句,C++ 也不保证是原子操作。 CPU 可能会调整指令的执行 阅读全文
posted @ 2021-03-16 10:05 tycoon3 阅读(266) 评论(0) 推荐(0)

导航