defer로 인해 lock의 범위가 넓어져 발생한 문제 분석 동시성 코드에서 lock은 가장 직관적인 장치 중 하나로 여러 스레드가 같은 상태를 동시에 읽고 쓰면 race condition이 발생할 수 있기 때문에 공유 자원을 보호하기 위해 lock을 사용. 문제는 아래의 코드 패턴은 락의 범위를 함수 끝까지 늘려서 이 경우 후속 로직에서 lock을 다시 잡아야 하는 코드가 존재면 문제가 발생할 수 있음.func foo() { lock.lock() defer { lock.unlock() } // do something} 문제가 발생하는 코드 예시락을 잡은 채 기다리는 구조가 생기면 장기 대기나 데드락으로 이어질 수 있음.특히 코드와 로직이 복잡할수록 원인이 코드 한가운데에 숨어..