gpt4 book ai didi

c++ - 从另一个线程调用 shared_from_this 但在初始化 shared_ptr 之后获取 bad_weak_ptr

转载 作者:太空狗 更新时间:2023-10-29 20:35:33 27 4
gpt4 key购买 nike

<分区>

p->start() 被调用之后 - shared_from_this 抛出 bad_weak_ptr
但如您所见,p->start()shared_ptr 完全启动后调用。

struct A : std::enable_shared_from_this<A> 
{
std::thread* t = nullptr;
A() {}
~A(){
t->join();
delete t;
}
void f() {
try{
auto p = this->shared_from_this();
std::cout << "p:" << p.get() << "\n";
} catch(...) {
std::cout << "Exception !!!\n";
}
}
void start() {
t = new std::thread(&A::f,this);
}
};
std::shared_ptr<A> create() {
A* a = new A();
std::shared_ptr<A> p(a);
p->start();
return p;
}
int main()
{
int i = 0;
std::map<int,std::shared_ptr<A>> map;
while( i < 1024) {
auto ptr = create();
map[i++] = ptr;
}
return 0;
}

link to working code (coliru) - unexplained bad_weak_ptr - exception is thrown ...

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com