VC++ 사용 중에 경험한 적 있습니다.
Socket 통신을 하는 프로그램이었는데
Server Side Socket과 Client Side Socket 2개를 각각 쓰레드에서 실행하고 있었는데
노트북에서는 잘 실행되는 것이 HT CPU가 장착된 PC에서는 실행이 통 안 되는 겁니다.
여러모로 조사하다가 결국 Socket을 사용하는 Thread가 서로 동시에 실행되다가
Socket Initialize가 이루어지지 않은 상태에서 한 Thread가 Socket 처리를 했다고 결론내리고
Main Thread에서 Socket Initialize를 강제로 호출하고 다시 실행시키니 정상 동작했습니다.
경호 님이 쓰신 글 :
: Multi thread의 씽크가 깨지는것을 경험해 보신분 있으신가여 ?
:
: 익스플로어를 Ctrl-N으로 하나더 듸운 상태에서 ActiveX를 돌리면
: 영상쪽 씽크가 개지는 상황이 발생하는데 실제 프로그램 내부에는 static이나 global쪽 변수를 사용하지
: 않습니다.
:
: 도통 이해가 안되는 상황이네여 ㅠ.ㅠ
:
: 혹시 그런 경험있으신 분 계시면 리플 달아 주세요
:
: 참고로 영상을 디코딩 할때는 크리티컬섹션처리를 모두 해 놓은 상태입니다.
: Hyper thread를 활성화 시키지 않은 상태에서는 위와같은 방법으로 몇개를 더 띄워고
: 발생하지 않는 문제인데 요상하네여
|