使用std::future::wait()程序正常,使用std::future::get()崩溃
4条回答 默认 最新
关注 【相关推荐】
- 你看下这篇博客吧, 应该有用👉 :关于std::future成员函数wait_for()
- 除此之外, 这篇博客: C++11多线程:future头文件中的 7)std::future::wait_for 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
和std::future::wait基本相同,只是加了时间段(rel_time)限制。- 因共享状态就绪返回,同std::future::wait。
- 因超时返回,无作为,不提供同步。
若未就绪的共享状态具有推迟功能(例如以 launch::deferred 模式调用
async
返回的future),函数不阻塞线程,而是直接返回 future_status::deferred 。future_status:
示例:// future::wait_for #include <iostream> // std::cout #include <future> // std::async, std::future #include <chrono> // std::chrono::milliseconds // a non-optimized way of checking for prime numbers: bool is_prime (int x) { for (int i=2; i<x; ++i) if (x%i==0) return false; return true; } int main () { // call function asynchronously: std::future<bool> fut = std::async (is_prime,700020007); // do something while waiting for function to set future: std::cout << "checking, please wait"; std::chrono::milliseconds span (100); while (fut.wait_for(span)==std::future_status::timeout) std::cout << '.'; bool x = fut.get(); std::cout << "\n700020007 " << (x?"is":"is not") << " prime.\n"; return 0; }
输出(时间不尽相同):
checking, please wait.......................................... 700020007 is prime.
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报
悬赏问题
- ¥15 msix packaging tool打包问题
- ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
- ¥15 python的qt5界面
- ¥15 无线电能传输系统MATLAB仿真问题
- ¥50 如何用脚本实现输入法的热键设置
- ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
- ¥30 深度学习,前后端连接
- ¥15 孟德尔随机化结果不一致
- ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
- ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线