클래스 선언.
class CSingleCore
{
public:
class SingleCoreError
{
};
ULONG_PTR oam_;
CSingleCore()
{
ULONG_PTR pam, sam;
if (!GetProcessAffinityMask(GetCurrentProcess(), &pam, &sam))
throw SingleCoreError();
ULONG_PTR am = 1;
int bits = CHAR_BIT * sizeof(am);
for(int i=0; i<bits; ++i)
{
if(am & pam)
{
oam_ = SetThreadAffinityMask(GetCurrentThread(), am);
if(!oam_)
throw SingleCoreError();
break;
}
am <<= 1;
}
}
CSingleCore::~CSingleCore()
{
SetThreadAffinityMask(GetCurrentThread(), oam_);
}
}
사용시
int func()
{
CSingleCore scTmp;
int a = 1 + 2 + 3;
return a;
}
CSingleCore가 생성될 때 SingleCore로 설정함.
함수를 빠져나가면서 CSingleCore가 소멸될 때 원래 설정으로 되돌림.
'개발 > C++Builder' 카테고리의 다른 글
Form 생성 및 소멸 순서 (0) | 2020.08.25 |
---|---|
디버깅시 Disconnected session 조치 (0) | 2020.08.18 |
3.5G 이상의 메모리 사용하는 프로그램 디버깅시 디버거 연결 끊김. (0) | 2020.08.18 |
TDateTime 의 double type 의미 (0) | 2020.08.17 |