高校网站建设汇报,百度seo还有前景吗,网站建设和管理培训,镇江seo方案异步实现的一些方式 事件循环实现回调函数实现 其实主要就是用到std::future和std::async这些#xff0c;记录一下异步耗时操作是否结束
事件循环实现
其实主要就是这一行代码
std::futureint fut std::async(std::launch::async, async_operation);#includei… 异步实现的一些方式 事件循环实现回调函数实现 其实主要就是用到std::future和std::async这些记录一下异步耗时操作是否结束
事件循环实现
其实主要就是这一行代码
std::futureint fut std::async(std::launch::async, async_operation);#includeiostream
#includefuture
#includethread
#includechrono
#includecondition_variable
#includemutex// 事件循环实现异步
int async_operation() {// 模拟耗时操作,sleep 5sstd::this_thread::sleep_for(std::chrono::seconds(5));return 42;
}void on_result(int result) {std::cout Result of the async operation: result std::endl;
}int main() {// 使用std::async启动异步操作std::futureint fut std::async(std::launch::async, async_operation);// 在主线程中输出一条消息表明异步操作已开始std::cout Async operation started. std::endl;// 使用事件循环检查异步操作是否已完成while (true) {// 表示最多等待100ms如果异步操作完成了返回std::future_status::ready否则返回std::future_status::timeoutstd::future_status status fut.wait_for(std::chrono::milliseconds(100));if (status std::future_status::ready) {// 异步操作已完成获取结果并调用回调函数int result fut.get();on_result(result);break;}// 在这里执行其他任务例如处理用户输入、更新UI等std::this_thread::sleep_for(std::chrono::milliseconds(100));}return 0;
}回调函数实现
#include chrono
#include condition_variable
#include future
#include iostream
#include mutex
#include thread// 回调实现异步2-2是不采用匿名表达式的方式
int async_operation() {// 模拟耗时操作std::this_thread::sleep_for(std::chrono::seconds(5));return 42;
}void on_result(int result) {std::cout Result of the async operation: result std::endl;
}void async_callback(std::functionvoid(int) callback) {// 启动一个新线程来执行异步操作std::thread t([callback]() {int result async_operation();callback(result); // 调用回调函数});// 分离线程使主线程不再等待它完成t.detach();
}int main() {// 在主线程中输出一条消息表明异步操作已开始std::cout Async operation started. std::endl;// 使用回调函数启动异步操作async_callback(on_result);while (true) {// 在这里执行其他任务例如处理用户输入、更新UI等std::cout 处理其他任务1 std::endl;std::this_thread::sleep_for(std::chrono::seconds(1));std::cout 处理其他任务2 std::endl;}return 0;
}