서버인데

OnConnect(), OnDisconnect() 로 소켓이 연결/해제시 이 함수가 호출되는데

OnConnect는 Accept 스레드에서 실행되고

OnDisconnect는 Recv 스레드에서 실행이 됨.

메인 스레드는 공유자원들을 관리하게 만들어서,

소켓 관리 객체 CSocketMgr은 메인 스레드가 가지고 있음.

따라서 OnConnect(), OnDisconnect()시 소켓을 CSocket으로 래핑해서

CSocketMgr에 집어넣거나 빼는데 그 때 동기화 해줌.

내가 궁금한 것은 다음부터 시작하는 건데,

소켓을 래핑한 객체를 사용할 때 CSocketMgr에서 Find해서 가져온 CSocket포인터를 사용할 때

Recv 스레드에서 OnDisconnect가 발생하여 그 객체를 지워버리고 CSocket포인터를 사용하면 메모리 참조 에러가 터지겠지

그러면 Find 하기 전 CSocketMgr에 락 걸고 CSocket포인터를 다 사용 후 락을 해제하는 이런 방식을 써야하는건가?

이렇게 되면, 뭔가 비효율적인거 같은데...