본문 바로가기
c++_korea_강의.

c++_ 채팅서버를 위한 c++

by kcj3054 2022. 6. 22.

- iocp는 이벤트 오면 벌써 다 받아진 것이다.
recv할 필요가없다..  (커피 예시..)
- iocp는 비동기 io ..

- 소켓에 네트워크 이벤트가 발생하면
iocp 이벤트핸드에서 알 수 있다.. 

- io completion queue

- getQueucompletion port는 쌓인 큐에서
데이터를 들고오는 작업.. 

````
iocp 핸들을 만들고, 
알고싶은 소켓을 연결하고 
io핸들하고 이벤트를 getQueuecommpletion..
으로 알아낸다.. 

`````

- 채팅서버도 방만들고 방안에 들어가서
채팅하는 것... 게임서버랑 비슷하다.. 

- 실패나 오류가 어려개 있을 때 
enum class를 사용하는 것이 좋다 
클라 서버 통신할 때도 오류를 찾기 쉽다..

- 벡터를 사용하면 유저를 10, 100 유동적으로
받을 수 있다... 

- 벡터를 사용하면 데이터 접근을 랜덤하게 하고싶다.

- 중간에 데이터 삽입이나 삭제가 없을 경우 
추천.. 이게 있으면 안좋다.. 

- 커널에서 해당 스레드가 일하도록 받았는데
sleep 시간이 0이라면 나는 일을 안하겠다. 
yield해서 다른 실행 스레드에게 양도하는 것이다. 

[debug와 release 모드 차이점]

- debug모드는 초기화해주지않아도 0값이
들어가지만, release모드는 코드를 최적화하여 
실행파일 크기를 줄여서 초기화도 하지않는다.. 

 
- interlock체크, compare_exchange_weak체크.

- mutext보다 interlocked가 서능이 더 좋다
유저레벨, 커널레벨 동기화차이..

- lock_guard는 뮤텍스 소유와 해제를 한번에
RAII패턴..

- atomic이 좋은 이유는 락프리라서..