我一直在我的iPhone应用程序中使用Boost线程,并且偶然发现了一个问题。每当应用程序试图启动这样的线程时,每当尝试调用start_thread()
时都会引发错误,并且应用程序崩溃。尝试启动Boost线程时出错
我真的不知道从哪里开始调试 - 从调试器中看不出来为什么boost线程无法初始化。应该注意的是,这只发生在应用程序运行一段时间后,并且在多个线程已经成功启动之后。
我最近一直工作在UI,并且我一直在使用下面的命令,以确保每一个更新的用户界面立即发生在被称为:
[myViewController performSelectorOnMainThread : @ selector(show_myButton) withObject:nil waitUntilDone:YES];
虽然该命令似乎工作,并立即更新UI(在它被延迟之前),我担心它可能会对我遇到的提升线程问题负责。这听起来可能吗?有没有人曾经遇到过这样的事情,并对可能出现什么问题有任何建议?
这里,是为了启动线程的代码:
void ObjectiveCPlusPlusInterface::startMyThread(void* a, myObject* b)
{
boost::thread AVPlayerThread = boost::thread(&ObjectiveCPlusPlusInterface::myThreadFunction, this, a, b);
}
(其中一个& b是变量)
void ObjectiveCPlusPlusInterface::myThreadFunction(void* a, myObject* b)
{
...
}
正如你所看到的,startMyThread()
尝试启动升压线程,它执行功能myThreadFunction()
。但是,未达到myThreadFunction()
,因为启动boost线程会引发错误。
你可以请发表包含创建线程的代码,直到加入它的点? (省略不相关的中间代码) –
另外,看看[这个问题](http://stackoverflow.com/q/2109483/596781),你确定你在捕捉异常吗? –
谢谢 - 我现在已经添加了代码。关于捕捉例外情况,不,我不确定我是否正在这样做 - 并且,在下面查看您的答案时,我不完全明白如何执行此操作。你能就此给我任何建议吗? – user1295558