3

부스트 스레드 라이브러리는 abstraction for thread specific (local) storage입니다. 필자는 소스 코드를 살펴본 결과, TSS 기능이 날씨에 관계없이 boost :: thread --ie로 작성된 응용 프로그램에서 사용할 수있는 것처럼 보입니다. 이는 특정 콜백이 커널에 등록되어 있음을 의미합니다. 스레드 또는 프로세스가 범위를 벗어날 때 TSS 객체의 소멸자를 호출 할 수있는 콜백 함수에 연결합니다. 나는이 콜백을 발견했다.부스트 스레드 특정 저장소 질문 (boost/thread/tss.hpp)

여러 웹 서버의 작업자 스레드 안에 OpenSSL의 HMAC_CTX를 캐싱해야합니다 (자세한 내용은 this 참조). 따라서 스레드의 수명을 제어하지 않습니다. - 웹 서버가합니다. 그러므로 boost :: thread가 생성하지 않은 쓰레드에서 TSS 기능을 사용할 것이다.

캐싱 논리를 구현하기 전에 내 가정을 검증하기 만했는데 논리에 결함이 있습니까?

답변

1

네가 맞아. 당신은 boost :: thread에 의해 생성되지 않는 쓰레드를 위해 그것을 사용할 수있다. test_tss.cpp에서 보면 정확히 테스트 한 것을 볼 수 있으며 POSIX와 Windows 스레드 모두에서 작동해야합니다.

+0

고마워요! 당신의 안구가 인정됩니다. –

1

메인 스레드가 끝날 때 소멸자가 호출되지 않기 때문에 이것은 부분적으로 옳습니다.