原子操作并不能保证数值的准确与一致性

// 保存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

posted @ 2025-09-08 16:14  静月无尘  阅读(7)  评论(0)    收藏  举报