오늘은 어제 하던 listener에 session_pool을 연동시키고 listener에서 세션 풀을 바라보면서 요청사항이 들어오면
하나씩 꺼내서 처리할 수 있도록 제작했다.
아직 테스트를 못해봤는데 테스트를 위한 코드까지 짜려면 오늘 커밋을 못할 것 같아서 여기서 끊었다.
비동기 코딩을 하면서 느끼는 가장 큰 점은 함수 컨텍스트가 어디까지인지 파악하는 점이 굉장히 중요하다는 점이다.
초기에 타이머를 작성하면서 마주쳤던 가장 큰 문제가 컨텍스트에 의해 선언한 객체가 사라져서 겪는 문제였다.
그림으로 그려보면 아래와 같다.
foo 함수에서 특정 객체를 가리키는 포인터 p1를 생성하고 그 포인터를 인자로 넘겨 t1을 만든다.
그리고 t1쓰레드를 detach하면 그 순간 foo 함수의 컨텍스트가 끝나며 p1 이 삭제된다. 그래서 쓰레드에서 막상 쓰려고
p1을 참조할 때 쓰레기값이 참조되어 나오게 된다.
쓰레드관련 코딩을 할 때는 조심을 10번 이상 해야할것 같다.
'프로젝트 > bankserver' 카테고리의 다른 글
[c++/boost::asio] Bank Server 개발일기 (0) | 2020.04.26 |
---|---|
[c++/boost::asio] Bank Server 개발일기 (0) | 2020.04.19 |
[c++/boost::asio] 개발 일기 (0) | 2020.04.16 |
시작 (0) | 2020.04.10 |