반응형
예전에 개발을 하다가 정말 이상한 현상을 발견해서 한참 고생한적이 있다.
rand 함수를 이용해 키 값을 만드는 모듈이었는데
분명 srand(time(NULL)); 을 호출을 했는데도 불구하고
rand() 함수가 계속 똑같은 패턴으로 숫자를 만들어내는것이다.
아니 도데체 이게 뭔일인가 싶어서 디버깅도 해보고
1스텝씩 지나가봐도 srand 는 분명 호출을 하는데 rand 는 똑같은 숫자만 나오고...ㅠㅠ
며칠이 지나서 알게 된 사실
srand 는 프로세스 종속이 아닌 Thread 종속이다.
즉 Thread 별로 srand seed 값을 설정해야 한다는 점이다.
나는 main 함수쪽에서 srand 를 호출했으니 당연히 전역적으로 rand 가 바뀔꺼라 생각해서 만든 모듈이었는데..
즉 rand 함수를 사용하는 Thread 에서 초기에 srand 로 seed 값 설정을 해야 한다.
아직 Thread 를 다루지 않고 있는 사람도 알아 두면 좋을것 같아 블로그에 포스팅한다.
좀 더 자세히 설명되어 있는 블로그가 있어 링크를 참조하면 좋을듯
http://jacking.tistory.com/450
'Programming > C/C++' 카테고리의 다른 글
내 네트워크상의 모든 컴퓨터 이름 목록과 IP 주소 출력 (0) | 2012.12.20 |
---|---|
Text 마지막에서 10줄 읽어오기 (0) | 2012.11.19 |
Visual Studio 2012 Thread Library 사용 (1) | 2012.08.21 |
C++ UAC Class (0) | 2012.02.28 |
VC Express. Dll 또는 Lib 프로젝트에서 버전을 표시 하자. (1) | 2009.08.11 |
Visual Basic (VB) 에서 C DLL 사용하기(C DLL 을 ATL 로 편하게 포장) (0) | 2009.06.03 |
윈도우에서 C 계열 프로그래밍 할때 포인터 유효 검사. (0) | 2009.04.09 |
C++ 0x Preview - What Changed? (1) | 2009.02.27 |