boost :: weak_ptr을 사용하여 아무도 객체 중 하나를 사용하지 않을 때 얻을 수있는 객체 풀을 구현할 생각입니다. 내 관심사는 멀티 스레드 환경이기 때문에 범위를 벗어나는 개체에 대한 마지막 shared_ptr과 weak_ptr에서 생성 된 새로운 shared_ptr 사이에 경쟁 조건이있는 것으로 보입니다. 일반적으로 잠금 또는 무언가로 이러한 작업을 보호 할 수 있습니다. 그러나 여기서 중요한 것은 shared_ptr이 언제 범위를 벗어날 지 모를 때입니다.리소스 풀을 구현하는 다중 스레드 프로그램에서 weak_ptr을 향상 시키십시오.
나는 boost :: shared_ptr 및 boost :: weak_ptr에 대해 오해하고 있습니까? 그렇지 않다면 누구에게 무엇을해야하는지에 대한 좋은 제안이 있습니까?
감사합니다. 앤드류
week_ptr이 삭제 된 객체를 가리키는 경우 생성자가 bad_weak_ptr 예외를 throw하기 때문에 shared_ptr이 유효한지 여부를 테스트 할 필요가 없다고 생각합니다. 또는 weak_ptr :: lock()을 사용해야합니다. throw하지 않지만 NULL을 가리키는 shared_ptr을 반환 할 수 있습니다. –
Serge
그래서 원자가? man 페이지의 Thread Safety 섹션은 내 마음 속에 의심의 여지를 남겨 둡니다. –
@ Serge : 고마워요! 나는 내 직책을 고치겠다. –