프로젝트/bankserver
[c++/boost::asio] Bank Server 개발일기
어제 배운 내용이다. this포인터를 사용하는 람다식을 작성하면 해당 람다식이 생성되는 시점의 this가 박제되어 들어간다. 이 문제 때문에 정상적으로 세션이 해제되지 않는 버그가 있었다. 우선 세션이 파기되는 조건은 인자로 주어지는 expire_time이상의 시간이 지나면 자동으로 세션 객체가 해제되도록 되어있다. 세션 생성자에서 타이머에 this->세션파기() 함수를 람다로 넣고 다른 쓰레드에서 시간을 세다가 해당 람다를 호출하는 방식이다. 내가 생각했던 작동 방식은 해당 세션이 복사된다면, this포인터가 가리키는 객체도 함께 변해서 복사된 객체도 정상적으로 세션이 해제될 줄 알았다. 하지만 세션을 복사해도 람다식에 선언했던 this의 주소는 바뀌지 않았다. 리스너에서 받은 정보를 바로 전달하는 것..
2020. 4. 26. 19:08