TryEnterCriticalSection
Development/C / C++ 2006. 12. 27. 14:50크리티컬 섹션에 관련된 함수 중의 TryEnterCriticalSection은 EnterCriticalSection함수 대신에
사용할 수 있는 함수인데 이 녀석은 Windows NT이상에만 사용할 수 있기 때문에 사용하기 위해서는 다음과 같은 일을 해주어야 한다.
1. #include <windows.h> ; TryEnterCriticalSection은 winbase.h에 선언되어 있다.
2. _WIN32_WINNT Define
두 가지 방법이 있다. 첫번째는 직접 소스코드에 define 해주거나 프로젝트 설정에서 Define해준다.
1) _WIN32_WINNT 은 windows.h를 include하기 전에 define해준다.
2) Project Property - C/C++ - Preprocessor
이 때 "_WIN32_WINNT=0x400" 에서 공백문자가 없도록!!
사용할 수 있는 함수인데 이 녀석은 Windows NT이상에만 사용할 수 있기 때문에 사용하기 위해서는 다음과 같은 일을 해주어야 한다.
1. #include <windows.h> ; TryEnterCriticalSection은 winbase.h에 선언되어 있다.
2. _WIN32_WINNT Define
두 가지 방법이 있다. 첫번째는 직접 소스코드에 define 해주거나 프로젝트 설정에서 Define해준다.
1) _WIN32_WINNT 은 windows.h를 include하기 전에 define해준다.
#ifdef WIN32
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0500
#endif
#endif
#include<windows.h>
2) Project Property - C/C++ - Preprocessor
이 때 "_WIN32_WINNT=0x400" 에서 공백문자가 없도록!!
'_beginthreadex': identifier not found, even with argument-dependent lookup
Development/C / C++ 2006. 12. 27. 10:02'_beginthreadex': identifier not found, even with argument-dependent lookup
크리티컬 섹션에 관련된 함수를 사용할 때 종종 빌드 에러를 만나게 되는데
VS.NET 에서 Win32 Console 프로젝트 기본 생성시에는 Run-time Library가 Single-Thread Debug로 잡혀있기 때문에 _beginthreadex를 찾지 못하여 빌드 에러가 발생한다.
정상적으로 빌드를 하려면 프로젝트의 속성 창을 열어서 'C/C++ - Code Generation' 의
Run-time Library 항목을 Single Thread에서 Multi Thread로 바꾸어 주면 된다.
크리티컬 섹션에 관련된 함수를 사용할 때 종종 빌드 에러를 만나게 되는데
VS.NET 에서 Win32 Console 프로젝트 기본 생성시에는 Run-time Library가 Single-Thread Debug로 잡혀있기 때문에 _beginthreadex를 찾지 못하여 빌드 에러가 발생한다.
스레드 사용 코드
빌드 에러
정상적으로 빌드를 하려면 프로젝트의 속성 창을 열어서 'C/C++ - Code Generation' 의
Run-time Library 항목을 Single Thread에서 Multi Thread로 바꾸어 주면 된다.
프로젝트 속성 설정화면