【发布时间】:2016-07-23 05:19:01
【问题描述】:
我目前正在开发一个程序,需要从socket服务器下载一些图片,下载工作会执行很长时间。所以,我创建了一个新的std::thread 来做到这一点。
下载后std::thread会调用当前Class的一个成员函数,但是这个Class很可能已经被释放了。所以,我遇到了一个例外。
如何解决这个问题?
void xxx::fun1()
{
...
}
void xxx::downloadImg()
{
...a long time
if(downloadComplete)
{
this->fun1();
}
}
void xxx::mainProcees()
{
std::thread* th = new thread(mem_fn(&xxx::downloadImg),this);
th->detach();
//if I use th->join(),the UI will be obstructed
}
【问题讨论】:
-
欢迎来到 Stack Overflow!我尽可能地编辑了你的问题。但是,添加代码和描述的解释,以便更多具有该主题知识的人看到它。请在您遇到的特定错误消息中进行编辑,以防有必要识别特定问题。祝你好运!
-
你为什么不使用
std::future<Image>? -
一般来说,自己使用线程总是一个坏主意。
标签: c++ multithreading c++11 cocos2d-x stdthread