我是Java工程师,但我需要将我的Java代码迁移到C ++。
在C ++中:
void foo(){
thread t(&loading_function);
t.detach();
}
void loading_function(){
while(true){
//..some loading operations
}
}
//I want to call after loading_function NOT in main thread like t.join();
void loading_after(){
//..loading after handling
}
我希望在线程t
结束其进程后进行处理。
喜欢这个Java代码:
public class Test implements Runnable{
public void foo(){
Thread loading_thread = new Thread(this);
loading_thread.start();
}
public void run(){
while(true){
//..some loading operations
}
loading_after();
}
public void loading_after(){
//..loading after handling
}
}
我该怎么做?
答案 0 :(得分:1)
根据有关std::thread::detach()
工作原理的说明,我不认为您可以检测到它何时结束,除非您向外界发出loading_function()
信号已结束。似乎没有内置机制让分离的std::thread
发信号通知它已经结束。我可能错了,我对std::thread
没什么经验。
替代方法是创建一个同时执行loading_function()
和loading_after()
的函数,并将该函数传递给std::thread
对象。
void loading_function()
{
while(true)
{
//..some loading operations
}
}
//I want to call after loading_function NOT in main thread like t.join();
void loading_after()
{
//..loading after handling
}
void load()
{
loading_function();
loading_after();
}
void foo()
{
thread t(&load);
t.detach();
}