critical section

채팅 서버의 lock은 목록 복사까지만 잡고 전송은 밖에서 한다

공유 clients 목록은 짧게 보호하되, 느린 네트워크 send를 lock 안에 넣으면 전체 broadcast가 막힌다.

1 lockclients 목록 잠금구조 변경을 막음
2 copy수신자 스냅샷보낼 대상만 짧게 복사
3 unlock공유 상태 해제다른 join/leave 허용
4 send잠금 밖 전송느린 클라이언트가 전체를 막지 않음
5 cleanup실패 연결 제거다음 tick에서 목록 갱신
작업
lock 안
lock 밖
clients 추가/삭제
아니오
broadcast 대상 복사
아니오
socket send
아니오
느린 연결 처리
아니오
timeout/drop 정책
핵심lock의 범위는 자료구조 일관성까지다. 네트워크 속도를 lock 범위에 포함하면 병목이 된다.