[MFC] Thread안에서는 CSocket 클래스를 사용하면 안된다?!
Programming/WinAPI / MFC 2010. 10. 1. 16:38
이메일 보낼일이 있어서 코드 프로젝트에서 SMTP 코드를 배껴서 사용중이 었음
(원래 소스가 그렇게 되어 있었다오 -_- 쓰고 싶어서 쓴게 아님 ㅠㅠ
회사에서는 보통 c&p 디버깅 / 테스트가 일이라... 아 정말 싫다.)
그런데 이넘이 쓰레드 안아서 돌아가야할 필요가 있어서 않에 넣어서 사용하고 있는데
갑자기 뻑뻑 죽어버리는거임 - 아마도 MFC assertion? 에러 였던거 같은데...
디버깅 돌려보니깐 무슨 이름도 모르는 생판첨보는 MFC함수에 브포가 찍혀있고 -_-.....
함수스택타고 위로 올라가보니깐 CSocket.Create() 메소드 - 를 쓴 부분까지 올라오게 되더군여
이거 뭔소린가... 걍 싱글스레드 쓸땐 잘 작동하던 놈이 왜 이짓거리나...
분명히 그냥 socket은 thread-safe하다고 봤었는데 - 이상하다 -
그래서 구글링해 본결과 MFC버그라는 이야기도 있어서... 혹시해어 Create메소드만 고쳤는데
이렇게 하니깐 주소를 잘못참조했네 어쩌구 에러가....
그냥 그래서 (하라는대로?) 클래스에서 CSocket 멤버를 빼버리고
죄다 socket, send, recv, close 함수로 대체해버렸음 -_-...
-> MFC에서 Thread안에서 돌아가는 프로그램에서는 CSocket클래스를 쓰지말자??
(라고는 해도 아무리 봐도 그냥 땜질용 처방 같다 ;;; 원래문제는 따로 있을듯)
ps : 이부분에 대해서 좀 아시는 분은 댓글을. 뭐 자원을 더 할당하라 그런이야기는 있던...
(원래 소스가 그렇게 되어 있었다오 -_- 쓰고 싶어서 쓴게 아님 ㅠㅠ
회사에서는 보통 c&p 디버깅 / 테스트가 일이라... 아 정말 싫다.)
그런데 이넘이 쓰레드 안아서 돌아가야할 필요가 있어서 않에 넣어서 사용하고 있는데
갑자기 뻑뻑 죽어버리는거임 - 아마도 MFC assertion? 에러 였던거 같은데...
디버깅 돌려보니깐 무슨 이름도 모르는 생판첨보는 MFC함수에 브포가 찍혀있고 -_-.....
함수스택타고 위로 올라가보니깐 CSocket.Create() 메소드 - 를 쓴 부분까지 올라오게 되더군여
이거 뭔소린가... 걍 싱글스레드 쓸땐 잘 작동하던 놈이 왜 이짓거리나...
분명히 그냥 socket은 thread-safe하다고 봤었는데 - 이상하다 -
그래서 구글링해 본결과 MFC버그라는 이야기도 있어서... 혹시해어 Create메소드만 고쳤는데
이렇게 하니깐 주소를 잘못참조했네 어쩌구 에러가....
그냥 그래서 (하라는대로?) 클래스에서 CSocket 멤버를 빼버리고
죄다 socket, send, recv, close 함수로 대체해버렸음 -_-...
-> MFC에서 Thread안에서 돌아가는 프로그램에서는 CSocket클래스를 쓰지말자??
(라고는 해도 아무리 봐도 그냥 땜질용 처방 같다 ;;; 원래문제는 따로 있을듯)
ps : 이부분에 대해서 좀 아시는 분은 댓글을. 뭐 자원을 더 할당하라 그런이야기는 있던...
'Programming > WinAPI / MFC' 카테고리의 다른 글
memset 과 ZeroMemory은 달라요. 바꿔서 쓰지마세여 (3) | 2010.04.27 |
---|---|
내가 비주얼스튜디오를 쓰게 되다니! (10) | 2009.07.05 |