我一直在我的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