는 일반적으로 다음과 같이 전 세계적으로 사용할 수있는 변수의 .cpp 파일 결과에 변수를 사용하여 :C++에서 프로세스 전역 변수를 구현하는 방법은 무엇입니까?
.cpp 파일이 정적 라이브러리에 넣고 한 개 이상의 공유 라이브러리 (DLL)입니다.h file:
extern int myGlobal;
void work();
.cpp file:
int myGlobal = 42;
void work(){ myGlobal++; }
또는 정적 라이브러리에 대한 실행 가능 링크에는 각각 myGlobal
의 자체 사본이 있습니다. work()는 변수의 자체 버전을 수정합니다.
내 질문에 대한 답 : 프로세스 전체의 고유 변수 또는 해당 변수에 대한 포인터를 가져 오는 방법이 있습니까? 스레드 전역 변수에 대한 스레드 로컬 저장소와 유사합니다. 그것은 플랫폼에 독립적 일 필요는 없습니다. Win32에서 작동하는 보너스 포인트 :
질문은 "프로세스 전체"라는 말로 여러 프로세스가 아닙니다. 동일한 프로세스 내의 공유 메모리는 아마도 약간의 과잉이다. –
당신 말이 맞아요. 그러나 효과가 있으며 사용하기가 어렵지 않습니다. 그래서 왜 안돼 ? :) –
주의 : boost :: interprocess는 함정과 잡았다로 가득합니다. 예를 들어, 일부 플랫폼에서는 대기 상태와 같이 업무를 많이 수행하는 경향이 있습니다. 사용중인 부스트 코드를 읽었는지 확인하십시오. –