AI 시뮬레이션 쓰레드 보면


// 시뮬레이션 스레드: Step() 도중

auto* node = m_Blocks.back().get() + m_Current++;   // 비원자적 증가

std::construct_at(node, nw, ne, sw, se);

canonMap.try_emplace(key, node);                     // 삽입 → rehash 유발 가능


// 에디터 스레드: 같은 인덱스 캐시로 copy/paste

canonMap.find(otherKey);                             // rehash 진행 중이면 → UB


요렇게 짜는데, 

m_current++가 비원자 증가고, open-addressing 맵의 삽입중에 rehash가 동시 read 되니까 결국 UB가 됨


기계인데 기계적 감수성을 이해 못해서 데이터 레이스가 나오는데, 기본적으로 쓰레드 풀 로 워커 재사용한 후에 고유 ID로 캐시를 고른 후에 원자성을 보장하게 캐싱을 해야하는데


AI가 짜면 그냥 지금 돌아가는 코드만 짜는데 아직도 인간이 피룡없다 하는 이유를 모르겠음