我有一個創建線程的應用程序,它將監聽傳入的連接。主線程將做其他事情。Boost Thread - 創建一個沒有連接的線程()
boost::mutex mutex;
void
ThreadFunction(int port, int(*callbackFunc)(int, int))
{
mutex.lock();
std::cout << "Cannot get to this point" << std::endl;
mutex.unlock();
Application app;
app.run(port, callbackFunc);
}
void
Init(int port, int(*callbackFunc)(int, int))
{
std::cout << callbackFunc(1,1) << std::endl;
boost::thread t(boost::bind(&ThreadFunction, port, callbackFunc));
}
int
main(){
int port = 2340;
Init(port, *callbackfunction);
return 0;
}
我遇到的問題是,它從來沒有訪問std::cout << "Cannot get to this point" << std::endl;
但是,如果我叫join()方法後,我創建的線程,它工作得很好,但隨後被阻止的應用程序。
我需要爲線程調用ThreadFunction做什麼?
此外,我相信標準的說'terminate()'將會在std :: thread被銷燬時被調用。 Boost的實現調用'detach()'來代替,但它可能會改變以符合未來的標準,所以讓它超出範圍可能不是一個好主意。 –