Loading...

_beginthread와 _beginthreadex의 차이

출처 : http://naiades.tistory.com/6 윈도우즈에서 스레드를 생성하는 API는 CreateThread(), _beginthread(), _beginthreadex() 이렇게 3개의 함수가 존재합니다. CreateThread()와 _beginthread(), _beginthreadex()의 차이점은 다음과 같습니다. CreateThread()는 스레드를 생성하는 기능만 담당한다. _beginthread(), _beginthreadex()는 내부적으로 CreateThread() 를 사용하여 스레드를 생성하고 C Runtime library에서 내부적으로 필요로 하는 메모리 영역을 초기화 해주는 역할을 하게 됩니다. 초기화 되는 메모리 영역은 각 스레드 마다 따로 관리되게 됩니다. 그렇다..

언제나 최악의 상황에서 스레드 테스트를..ㅜㅜ..

일반적으로 테스트해볼때는 이런 버그가 안생겼는데 엄청난 부하를 주고 프레임을 1~2까지 만든 다음에 왕창 테스트를 해보니 이런 버그도 나는군 ... 헐. 스레드는 역시 테스트를 많이 해봐야해.ㅜㅜ. Vector: deque iterator not dereferencable Hi, i've got a problem with a stl vector, and i cant find any information about this error. the error is: deque iterator not dereferencable while(!Servers->empty()){ if (RequestServerInfo(&Servers->front())!=0){ MisScanned++; } else{ if (DealWit..

DllMain 사용, DllMainCRTStartup , DllMain , fdwReason , DLL_PROCESS_ATTACH , DLL_PROCESS_DETACH

[DllMain 의 사용] IMAGE_OPTIONAL_HEADER에서 AddressOfEntryPoint 필드에 해당하는 값이 독자가 확인결과 0x00001230 였다. 그곳은 책에서 말하기로는 DllMainCRTStartup 함수에 대한 진입점 이라고 한다. 독자가 역어셈블리프로그램을 통해서 프로그램 시작부분을 봤는데 책의 설명대로 프로그램의 시작 부분이었다.하지만 DllMainCRTStartup 이라는 이름은 보이지 않고 그냥 함수 시작이라고 나오는데 솔직히 좀 애매모했다. 확실한건 이부분이 프로그램의 첫실행부분이라는 점이다. exe파일의 경우 WinMainCRTStartup 이나 mainCRTStartup의 진입점이고 프로그램이 WinMain이나 main을 호출한다. 하지만 우리가 만든 DLL의 경..

3d좌표 2d좌표로 변환

POINT CAppForm::CONVERT_3DTO2D_POINT ( const D3DVIEWPORT9& vp, const D3DXMATRIX& matView, const D3DXMATRIX& matProj, D3DXVECTOR3 v ) { D3DXMATRIXA16 matCombine = matView * matProj; D3DXVec3TransformCoord ( &v, &v, &matCombine ); v.x += 1.0f; v.y += 1.0f; v.x = ( vp.Width * (v.x ) ) / 2.0f + vp.X; v.y = ( vp.Height * (2.0f-v.y) ) / 2.0f + vp.Y; POINT pt; pt.x = (long)v.x; pt.y = (long)v.y; return..

EC++ 4. const의 사용 - 수정중

프로그래머로서 중요한 습관중 하나가 변수의 초기화라고 생각한다. 옜날부터 변수초기화 때문에 많은 삽질을 했었다. 그래서 언제부턴가 생성자나 Begin()함수나 Initialize()함수등을 둬서 모든 변수를 초기화 하는 습관을 가지게 되었다. MgSceneManager::MgSceneManager(void) { m_pCamera = NULL; m_pDxInput = NULL; m_pFps = NULL; D3DXMatrixIdentity(&m_matWorld); D3DXMatrixIdentity(&m_matView); D3DXMatrixIdentity(&m_matProj); D3DXMatrixIdentity(&m_matOrth); // test m_TeshEntity = NULL; m_pFontInstan..

EC++ 3. const의 사용

const를 사용하여 싱글톤 객체를 생성할때 #include "../Core/Render/MgDevice.h" MgDevice* const g_pDevice = MgDevice::GetInstance(); 이와같이 만들어 주었다. 이로인해 define을 대신하여 const를 사용해 줌으로써 얻는 몇가지 이점이 있었다. 우선 귀차니즘이 강한 나로서 가장 큰 이점은 사용의 편리함이었다. 매크로는 단지 매크로일 뿐이기 때문에 변수로 취급되지 않아 자동완성 기능을 제공하지 않아 항상 멤버를 보기 위해 해당파일을 찾아봐야 하지만 const는 변수로 만들면 자동완성을 제공해 준다. 위의 의미는 상수포인터, 비상수 데이터라는 의미이다. 내가 원한것은 객체의 주소는 pix하게 하고 내부 데이터는 고칠수 있도록 하는 것..

pragma 정리

--from http://system-inside.com 이 팁은 담비님(천리안 FREKBS)님이 98년 12월 14일에 천리안 프로그래머포럼에 올리신 것입니다. 담비님으로부터는 전제하여 올리는 데 대해 허락을 받았습니다. 좋은 정보를 공유하도록 허락해주신 담비님께 감사드립니다. ----------------------------------------------------------------------- 안녕하세요! 담비입니다. 본 문서는 제가 가지고 있는 책과 제공된 도움말을 기초로 하여 작성되어졌습니다. 제가 영어 실력이 부족한 탓으로 내용의 이해가 약간(?)은 힘들거나, 문맥상의 오류가 있을 수 있습니다. 혹 이런 내용을 발견하시거나, 잘못된 내용을 발견하시거나, 추가되어져야 할 내용을 발견하신다..

About Interlocked

About Interlocked .8 간단한 동기 액세스를 행하기 위한 API 복수의 스레드가 공유하는 변수에 대해서 동기 액세스를 간단하게 실시하기 위한 함수가 제공되고 있습니다. 변수의 값을 갱신할 때에 한 번에 하나의 스레드만 변경하는 것을 보증합니다. 3.8.1 InterlockedIncrement 지정된 변수의 값을 증가 시킵니다(increment)(하나늘립니다). LONG InterlockedIncrement( LPLONG lpAddend // 인크리먼트(increment) 해야 할 변수 ); lpAddend 인크리먼트(increment) 되는 변수의 포인터를 지정합니다. 반환 값 인크리먼트(increment) 후의 값이 반환됩니다. 3.8.2 InterlockedDecrement 지정된 변수..