开启一个AsyncTask后,如何将该AsyncTask停止,调用cancel方法无效。求大神,3Q.
设置一个变量,在线程中不断检测变量值。######还是没用,不知道是不是我写的有问题,麻烦你写个Demo吧,非常感谢啊######回复 @dashen : 在主线程中定义一个变量,以引用形式传到Task线程中,在主线程中更改该值,在子线程中检测该值。######能不能具体点,我试了好像没用######
int main()
{
bool flag = true;
boost::thread t(task,ref(true));
}
void task(bool &f)
{
while(1)
{
if(flag==false)
return;
}
}
试试。。。
######最好在变量前加 volatile , 防止编译器优化######int main() { bool flag = true; boost::thread t(task,ref(true)); } void task(bool &f) { while(1) { if(flag==false) return; } }
试试。。。
你thread的属性确定是aynchrounously cancelable么?我怀疑你属性设置的不对。
######另外,如果是synchronously cancelable属性的thread,也要在可以被cancel的点检查(pthread_testcancel),这样才能退出。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。