크로스 플랫폼 프로젝트에서 스레드 로컬 저장소를 사용해야합니다. * IX에서 pthreads를 사용하고 있는데, 좋은 소멸자 함수 포인터가 두 번째 인수 인 pthread_key_create
으로 전달 되었기 때문에 메모리 누수가 발생하지 않을 수 있지만, Windows에서는 TlsAlloc
에는 그런 것이 없습니다. 또한 어떤 함수가 스레드 종료시 호출되는 일반적인 위치를 찾을 수 없습니까 (그렇지 않으면 종료시 호출되는 함수 포인터의 목록을 homebrew로 작성합니다).Win32 API에서 스레드 로컬 저장소를 동적으로 해제하는 방법이 있습니까?
사실 내가 기본적으로 스레드 로컬 저장소를 사용하기 위해 힙에 자체 공간을 할당하고 TlsSetValue
에 대한 포인터를 전달해야하는 상황이있는 것처럼 보이지만 스레드가 종료되면 ... 메모리를 보장하는 방법은 명시 적으로 TlsGetValue
및 delete
/free
/HeapFree
/등 스레드 함수의 마지막에 호출 사람 이외의 다른 (해제되지 않았다있다.
는 사람이 더 좋은 방법을 알고 있나요?
스레드는 어떻게 종료됩니까? 일반적인 방법은 threadproc이 반환되기 전에 정리하는 것입니다. –