웹서버 : 보통 클라이언트에서 요청, 응답 한번씩
게임서버 : 계속 서버와 정보를 주고 받음
client -> server // move_x(1);
server_logic // (server) x = x + 1
server -> client // pos_x
client_logic // (client) x = x + 1
tcp : 캐릭터가 죽거나, 거래 등 손실되면 안되는 패킷을 유지
udp : 캐릭터 움직임 같이 많은 트래픽에서 손실이 되어도 보정이 가능
synchronous blocking IO : syscall 이 완료될 때 까지 기다림
synchronous non-blocking IO : blocking 이 될 상황에서 일단 넘어감 - read(); 에서 안들어와도 넘어감 (EWOULDBLOCK같은 용어는 설명 못했음)
asynchronous blocking IO : IO는 non-blocking 이지만, 알림을 blocking 함 (select)
asynchronous non-blocking IO : IO를 background 에서 실행 callback 으로 처리
- 이거 설명에서 async block 을 epoll로 했는데, select도 들어가는거 같아서
- select 도 유저 한명에서 blocking 안당하니까 async인걸로 이해해 주시면 될거같아요!
채팅에서 accept, read 등 blocking 상황에서의 예시