본문 바로가기

프로그래밍

[프로그래밍] thread 종료되지 않는 문제 thread를 사용하다 프로그램 종료시 프로그램이 제대로 종료가 될때가 있고 종료가 되지 않아 디버깅을 해보니thread가 종료되지 않아 프로그램이 종료 되지 않는것이였다.그럼 왜 thread가 종료되지 않는지 원인을 찾아보니 UI Handle이 모두 반환된후에 thread에서반환된 Handle을 사용하게 되면 thread가 stuck되는 문제가 발생하였다.해결은 thread에서 UI Handle을 사용하지 않도록 하여 해결했지만 thread를 많이 사용해보지 않아삽질이 많이 했던듯 싶다. 더보기
[프로그래밍] 각종 난수 발생 함수 링크 일반적으로 사용하는 rand() 는 uniform한 난수를 발생시킨다.normal distribution이나 exponential distribution ... 등이 필요하면 아래 사이트에서 참고하여 작성하면 되겠다.http://www.pamvotis.org/vassis/RandGen.htm#include #include #include #include //Note: float variables are used. If you want to generate integer variables, just change the//return type of the function and all other types which are related to the result...float Constant(float me.. 더보기
[프로그래밍] rand 함수의 gcc에서와 vc 에서의 차이점 rand 함수는 다들알고 있듯이 난수 발생함수이다. 보통 0~9사이의 랜덤함수를 생성할 경우 rand()%10 정도로 사용하기도 한다. 이처럼 비교적 작은 범위의 난수를 발생하기에는 무리가 없겠지만 수의 범위가 16bit가 넘어갈경우 gcc와 vc에서 서로 문제가 생길수 있다. gcc에서의 rand 함수는 31비트 값의 난수를 발생시키지만 vc에서는 15비트의 난수를 발생하고 있다. 값이 크면 문제가 되지 않겠지만 gcc에서 vc로 포팅시 문제가 발생 할 수 있다. 이경우 아래 31비트 난수 발생 코드를 참조하여 해결 하면 될 것이다. http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/CODES/mt19937ar.c 하지만!!! 속도는 보장하지 못한다. 더보기
[프로그래밍] struct pack command (구조체 최적화 하기) 구조체를 어떻게 선언하느냐에 따라 일반적으로 용량차이가 발생하게 된다. typedef struct tagBITMAPFILEHEADER { WORD bfType; //4바이트 할당 DWORD bfSize; //4바이트 할당 WORD bfReserved1; //2바이트 할당 WORD bfReserved2; //2바이트 할당 DWORD bfOffBits; //4바이트 할당 } BITMAPFILEHEADER; 위와같은 구조체는 실제크기는 14바이트이지만 컴파일러는 16바이트로 처리하게 된다. 그 원리는 첫번째 워드가 실제크기는 2바이트지만 효율면에서 4바이트로 처리하는것이 좋기 때문에 4바이트로 할당을 하게 된다. 그리고 3번째 4번째 WORD는 4바이트 상위워드와 하위워드에 넣어 할당을 하게 되므로 총 합이 .. 더보기