Jordan Yeh
Results
2
comments of
Jordan Yeh
帮作者平反一下,最后一段代码其实作者提到的观念没有问题,分为两个部分: Q1: if (flag == true) 的优化 Q2: flag = true; 执行顺序的优化 这里我需要把代码稍微修改一下比较合适,也可以简化问题: ``` #include #include // global shared data bool flag = false; void thread2(int* value) { // do...
再来说明一下Q2代码改写的原因 ``` var++; *value = var + 1; flag = true; //Q2 ``` 因为`*value = var + 1;`需要等待`var++;`执行完才能执行,在此之前可能会被阻塞, CPU可能会为了不浪费等待时间而重排序,让`flag = true;`先执行,执行完之后也许`*value = var + 1;`就得以执行了。 但我在这个案例中没有观察到CPU乱序或编译器乱序的现象,可能还需要改代码。