在C++中,可以使用std::invoke
函數來處理異步操作。std::invoke
函數可以執行可調用對象(函數、函數指針、成員函數指針等)。
以下是一個簡單的示例,演示了如何使用std::invoke
處理異步操作:
#include <iostream>
#include <functional>
#include <thread>
void asyncOperation(std::function<void()> callback) {
std::thread t([callback]() {
// 模擬異步操作
std::this_thread::sleep_for(std::chrono::seconds(1));
// 調用回調函數
callback();
});
t.detach();
}
void callbackFunction() {
std::cout << "Async operation completed" << std::endl;
}
int main() {
asyncOperation([] {
std::cout << "Async operation started" << std::endl;
});
// 使用std::invoke調用回調函數
std::invoke(callbackFunction);
std::this_thread::sleep_for(std::chrono::seconds(2));
return 0;
}
在上面的示例中,asyncOperation
函數模擬了一個異步操作,并在操作完成后調用傳入的回調函數。在main
函數中,我們使用std::invoke
來調用callbackFunction
函數,以處理異步操作完成時的回調。
請注意,std::invoke
函數可以接受任何可調用對象,并在調用時遵循相應的語法規則。您可以根據需要將其用于處理異步操作。