어떤 개체가 스레드 콜백 함수의 인수로 전달되어야하는 상황이 있습니다. 객체는 동적으로 생성되고 스레드로 전달 된 후 객체는 더 이상 필요 없으며 (스레드를 시작하는 메소드에서) 더 이상 사용되지 않습니다. Thread 함수는 이제 객체를 소유해야하는 유일한 컨텍스트입니다.부스트 스마트 포인터를 스레드 함수에 전달
내가 부스트 스마트 포인터를 쓰겠다고 가정하면 (여기에 원시 포인터를 쓰레드로 전달하는 대신), 어느 쪽이 가장 적합할까요? 이 경우 가장 좋은 방법은 무엇입니까?
실제로 필요한 것은 복사 생성자를 통해 이동 의미가있는 std::auto_ptr
입니다. 나는이 똑똑한 포인터가 여기에 완벽하게 들어 맞을 것이지만 잘 알려진 이유 때문에 더 이상 사용되지 않을 것이라고 믿는다 (그리고 나는 tr1
과 C++11
포인터에 의존 할 수 없다). 을 사용해야 만한다.이 코드는 반드시 Visual Studio 2008 및) 모두를 컴파일하십시오.
boost::shared_ptr
옵션이 있습니다. 값으로 전달할 수 있지만 과도하다고 생각합니다. 으로 이동 의미를 에뮬레이트 할 수 있습니까? 두 문맥 사이에서 객체를 공유하지 않는다고 여기서는 참조 계산이 필요하지 않습니다. 객체에 대한 소유권을 다른 문맥으로 옮기고 싶습니다.
이제'boost :: interprocess :: unique_ptr'을 살펴 보겠습니다. 도와 주셔서 감사합니다. –