21 Matching Annotations
  1. Jun 2023
    1. 但在多线程的极端情况下,还是会产生缓存数据不一致的情况的。比如上述实例中,CPU-0修改数据,发消息给其他CPU,其他CPU消息队列接收成功并返回。这时CPU-1正忙着处理其他业务,没来得及处理消息队列,而CPU-1处理的业务中恰好又用到了变量a,此时就会造成读取到的a值为旧值。 这种因为CPU缓存优化导致后面的指令无法感知到前面指令的执行结果,看起来就像指令之间的执行顺序错乱了一样,对于这种现象我们俗称“CPU乱序执行”。

      指令乱序的另一种解释; 之前一直认为的是,jvm 编译时优化导致了指令乱序; 此观点认为实际上没有乱序,是因为CPU缓存没来得及更新导致的,看起来像乱序执行 两种观点待后续查证,可能两种都有关

      指令重排跟两个方面都有关系, 编译器的优化 CPU 缓存失效队列的延迟 b站

  2. Dec 2022
  3. Aug 2022
    1. API网关、防火墙、路由器等流量入口的服务器,要对流量做密集计算、校验、转发,CPU不强那肯定是不行的
    2. 绝大部分场景,内存才是限制系统性能的主要因素,而cpu一般都是性能过剩