gpt4 book ai didi

C++11 future::wait_for 编译错误

转载 作者:行者123 更新时间:2023-11-30 01:53:22 29 4
gpt4 key购买 nike

我正在尝试制作多线程应用程序,其中每个线程都将在不同的时间处理任务。所以我想使用 future 和 future::wait_for 函数。但是当我只使用来自 CPP reference 的代码时

#include <iostream>
#include <future>
#include <thread>
#include <chrono>

int main()
{
std::future<int> future = std::async(std::launch::async, [](){
std::this_thread::sleep_for(std::chrono::seconds(3));
return 8;
});

std::cout << "waiting...\n";
std::future_status status;
do {
status = future.wait_for(std::chrono::seconds(1));
if (status == std::future_status::deferred) {
std::cout << "deferred\n";
} else if (status == std::future_status::timeout) {
std::cout << "timeout\n";
} else if (status == std::future_status::ready) {
std::cout << "ready!\n";
}
} while (status != std::future_status::ready);

std::cout << "result is " << future.get() << '\n';
}

编译错误:

 thread.cpp:31:58: error: cannot convert ‘bool’ to ‘std::future_status’ in assignment

我使用的是 ubuntu 12.04 和 gcc 版本 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)有什么想法吗 ?谢谢 !

最佳答案

G++ 4.6.3 不完全支持 C++11,因此更新到完全支持 C++11 的更高版本(即 gcc 4.7 或更高版本)将解决此类问题。或者使用 clang 3.4(3.2 支持很多 C++11,但 3.4 支持更多,并且在此之上有更好的优化)。

关于C++11 future::wait_for 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23193788/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com