채팅 서버의 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 정책