在Java中有异步任务
private class AddTaskFeature extends AsyncTask<Void, Void, Void> {
AddTaskFeature(String _process){
}
@Override
protected void onPreExecute() {
}
@Override
protected Void doInBackground(Void... unused) {
}
@Override
protected void onProgressUpdate(Void... values) {
}
@Override
protected void onPostExecute(Void unused) {
}
}
该代码的C / C ++是什么?
答案 0 :(得分:2)
直到C ++ 11,对C ++没有统一的线程支持,更不用说基于更高级Future
的类了。在C ++ 11中,请查看std::future。
我认为你可以在boost中找到你需要的东西。 boost :: thread有一些类,可以让你做你需要的。
答案 1 :(得分:0)
AsyncTask由Android而非Java提供。在许多平台上,您可以使用pthreads进行多线程处理。在iOS上,您可以使用调度队列。您应该查看平台的编程手册。
答案 2 :(得分:0)
您可以使用lambda或覆盖operator()的类。
struct MyTask {
Result operator()() {
// do work here
return Result{};
}
};
auto fut = std::async( MyTask{} );
fut.wait( );
auto result = fut.get( );
或
auto fut = std::async( []() {
// do work
return Result{};
} );
fut.wait( );
auto result = fut.get( );
没有进展,但是可以提供args,工作的结果是未来的结果。
auto fut = std::async( []( int a, int b ) { return a + b; }, 5, 4 );
assert( fut.get( ) == 9 );