atomic: 원자성 ( ALL-Or-Nothing)
SpinLock: Lock에서 다른 쓰레드가 사용중이라 못 들어갈 때 쓰레드가 사용을 끝마칠때까지 기다리는 방법
동기 (synchronous) 와 비동기 (asynchronous)
멀티 쓰레드 환경에선 하나의 값에 동시에 참조하는 경우(write하는경우) 경합조건이일어난다. 이를 방지하기위해 2가지 방법을 사용해왔었다. Lock(mutex)를 이용한 상호 배타적 접근 Atomic(원자적) 연산 이용 Atomic islockfree(): A
소켓 프로그래밍은 함수가 굉장히 많다. 네트워크 단 코드는 한 번 만들어 두고 오랫동안 쓰니 다 외우고 이해하려하지말자
이젠 소켓 연결을 마무리 한 후 송/수신을 해볼 것이다.
먼저 UDP란?비연결형, 신뢰성 없는 프로토콜이다.바로 에코서버를 구현해보자.
소켓엔RecvBuffer,SendBuffer크기같은 여러가지 옵션들이 있다. 여러 가지가 있지만 자주 쓰일 수 있는 것만 간단히 알아보자
현재 사용하고 있는 소켓은 블로킹(Blocking) 소켓이다. 일부 함수에서 빠져나가지못하고 블로킹 상태가 된다. 블로킹 상태란 현재 스레드가 더 이상 코드를 진행하지 않고 block 상태로 멈춰 있는 상태를 말합니다.
게임 서버는 통상적으로 iocp 입출력 모델로 제작된다. 하지만 이번에 알아볼 모델은 가장 기본이 되는 select 모델이다.
select모델은 초기화와 등록을 계속 반복해야한다는 아쉬움이 있다. 이번에 알아볼 WSAEventSelect 모델은 이벤트를 기반으로한 모델이다.
overlapped는 non-blocking + aync 방법으로 진행된다. 이번엔 Send와 Recv만 Overlapped 모델을 적용 시켜볼 것이다.
이번엔 Event 기반이 아닌 Callback함수를 넘기는 Callback 기반 Overlapped 모델을 만들어 보자.event 기반과 유사하지만 조금씩 다르다
지난번에 했던 콜백 기반 overlapped 모델을 정리하고 Completion Port(IOCP) 모델을 알아보자.