原子操作并不能保证数值的准确与一致性
// 保存SSD值用于调试
if (ssd_debug != nullptr) {{
ssd_debug[dy_idx * WINDOW_SIZE + dx_idx] = ssd;
}}
// 原子操作更新最小SSD和位置
while (true) {{
unsigned int current_min = *min_ssd;
if (ssd >= current_min) break;
if (atomicCAS(min_ssd, current_min, ssd) == current_min) {{
// 使用原子操作同时更新dx和dy,确保一致性
*best_dx = dx_idx;
*best_dy = dy_idx;
break;
}}
}}
还要改进
cup多线程计算结果准确但是时间从3s变成58s
浙公网安备 33010602011771号