C++ 多线程与并发

1. 非原子操作

这些非原子操作在被编译为汇编代码后不止一条指令。

  • 自加、自减少;
  • new 关键字;

    • 申请内存;
    • 调用构造函数;
    pInst = new T;
    // 对于这样一个赋值语句,更是包含了如下:
    // 1. 申请内存空间;
    // 2. 在内存的位置上调用构造函数;
    // 3. 将内存的地址赋值给 pInst 

2. 指令顺序

pInst = new T; 这样的一个操作,包含的三个步骤,(2)和(3)的顺序是可以颠倒的,但内存空间的申请必须是第一步。

原文地址:https://www.cnblogs.com/mtcnn/p/9421155.html