2013-03-31 2 views
1

아래에 링크 된 Niklas Frykholm이 작성한 아주 멋진 블로그 게시물을 읽는 동안 나는 머리를 감쌀 수없는 것을 발견했습니다. 스레드 로컬 포인터 초기화

http://bitsquid.blogspot.nl/2012/01/sensible-error-handling-part-1.html

이 코드

날 혼란 :

__THREAD Array<const char *> *_error_context_name; 
__THREAD Array<const char *> *_error_context_data; 

코드는 간단한 스택으로 사용되는 문자열 배열로 스레드 로컬 포인터를 정의한다. 필자가 이해하지 못하는 점은 플랫폼을 교차하여 배열을 초기화하고 파괴하는 방법이라는 것입니다. 또한이 방법은 DLL 경계에서 어떻게 작동합니까?

답변

1

스레드 로컬에서만 프로그램에서 변수가 해결되는 위치에 대한 의견을 말합니다. 다른 변수와 마찬가지로 사용하기 전에 할당해야합니다.

성의 및 성능을 위해 스레드를 시작했을 때 수행하는 것이 좋습니다.

+0

그리고 내가 dll과 응용 프로그램에 포함 된 헤더 파일에 이것을 선언하면 dll에서 올바르게 해결 된 포인터가 있습니까? 에서와 마찬가지로, 그들은 주요 응용 프로그램과 동일한 위치를 가리 킵니까? –