我是一名 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
}
}
我该怎么做?
最佳答案
根据关于 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();
}
关于c++ - 我如何检测 std::thread 被终止为异步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30664595/