[c++/boost::asio] Bank Server 개발일기

폭풍저그머성찡 ㅣ 2020. 4. 17. 23:32

오늘은 어제 하던 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