void T_A() { lock(&obj->lock); free(obj->something); obj->something = NULL; unlock(&obj->lock); } void T_B() { lock(&obj->lock); if (obj->something) { // changes cache on speculative execution } unlock(&obj->lock); }