-
스레드(Thread)(복습)
⇒ 하나의 프로세스 내에서 실행되는 독립적인 실행 흐름
-
멀티스레드 기반 에코 서버의 확장형 ⇒ “채팅”
-
한 클라이언트 TCP 세션을 관리하는 개별 스레드가 클라이언트 수 만큼 존재
-
연결된 모든 클라이언트를 관리하기 위한 자료구조가 필요하면 이 자료구조에 대한 스레드 동기화가 필요하다.
- 따라서 보다 강도 높은 “안정성” 이 요구됨
- C 의 연결 리스트 또는 보다 쉽게, C++ STL List 를 활용할 수 있다.
-
브로드캐스팅(Broadcasting)
- 하나의 Client 로 부터 받은 데이터를 서버에 connected 된 모든 Client 에게 전달해주는 것
- connected 될 때의 통신 소켓 정보를 (1) “구조체” 에 [Socket, IP, 포트, 사용자 ID, 소켓 상태 등] 로 묶어 저장하고
, 이러한 구조체들을 (2) 배열, 리스트 등 “컨테이너” 로 관리하여 구현할 수 있다.
- (2) 컨테이너에 접근하여 브로드캐스팅을 진행할 땐, 하나의 쓰레드만 독점적으로 접근해야하기 때문에 동기화 객체를 사용하여 임계 구간을 설정한다.