barrier可阻止cup动态调度指令。
T * temp = new T;
barrier();
pInst = temp;
若不加barrier();cpu有可能会先执行pInst = temp;然后再执行T * temp = new T;这样,temp的构造过程尚未结束,另一个线程又使用pinst对象。就会引发错误。
barrier可阻止cup动态调度指令。
T * temp = new T;
barrier();
pInst = temp;
若不加barrier();cpu有可能会先执行pInst = temp;然后再执行T * temp = new T;这样,temp的构造过程尚未结束,另一个线程又使用pinst对象。就会引发错误。