我在我的 iPhone 应用程序中使用 Boost 线程已经有一段时间了,只是偶然发现了一个问题。每隔一段时间,当应用程序尝试启动这样的线程时,它会在尝试调用时抛出错误start_thread()
,并且应用程序崩溃。
我真的不知道从哪里开始调试这个 - 从调试器看来,为什么不能初始化 boost 线程似乎并不明显。需要注意的是,这只发生在应用程序运行了一段时间,并且已经成功启动了几个线程之后。
我最近一直在处理 UI,我一直在使用以下命令来确保 UI 的每次更新都在被调用时立即发生:
[myViewController performSelectorOnMainThread : @ selector(show_myButton) withObject:nil waitUntilDone:YES];
虽然该命令似乎有效,并且 UI 立即更新(在延迟之前),但我担心它可能是我遇到的 boost 线程问题的原因。听起来可能吗?以前有没有人经历过这样的事情,并对可能出现的问题有任何建议?
这是用于启动线程的代码:
void ObjectiveCPlusPlusInterface::startMyThread(void* a, myObject* b)
{
boost::thread AVPlayerThread = boost::thread(&ObjectiveCPlusPlusInterface::myThreadFunction, this, a, b);
}
(其中 a & b 是变量)
void ObjectiveCPlusPlusInterface::myThreadFunction(void* a, myObject* b)
{
...
}
如您所见,startMyThread()
尝试启动一个执行函数的 boost 线程myThreadFunction()
。但是,myThreadFunction()
未达到,因为启动 boost 线程会引发错误。