오늘은 여러 스레드가 동일한 Collection 객체에 동시에 접근하는 상황에서 C#의 일반 Collection과 Concurrent Collection이 어떻게 다르게 동작하는지 정리해보려 한다. 멀티스레드 환경에서 컬렉션을 공유하는 상황은 웹 서버, 메시지 컨슈머, 백그라운드 워커 등 도메인을 가리지 않고 매우 자주 등장한다. 이때 단순히 lock을 걸어 문제를 회피하기보다는, 각 컬렉션이 내부적으로 어떤 가정을 두고 설계되었는지를 이해하는 것이 중요하다.문제의 출발점: 일반 Collection은 thread-safe하지 않다C#의 일반 Collection (List, Dictionary 등)은 기본적으로 thread-safe를 보장하지 않는다. 반면 System.Collections.Concurr..