-2
모두 : this page에 따르면 C++ 구현은 일반적으로 스레드의 안전성을 보장하기 위해 원자 참조 수를 사용하지만 이는 일부 경우 버그가있는 것으로 보입니다. FUNC2의 복사본 건설 A1 감소의 내부 레퍼런스 카운트 후 발생하는 경우, 상기 코드 보듯C++ shared_ptr 스레드 안전을 보장하는 방법은 무엇입니까?
``
void func2(shared_ptr<int>* x) {
shared_ptr<int> a(*x);
*a += 1;
}
thread func1() {
shared_ptr<int> a1(new int(10));
thread t (func2, &a1);
return t;
}
``는 포인터는 두번 삭제 얻을 것이다 권리?
버그가있는 것은 여기 * 귀하의 코드 ... 매달려있는 원시 포인터입니다. – deviantfan