Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;在linux下,promise.set_值失败,出现未知错误_C++_C++11_Future - Fatal编程技术网

C++ C++;在linux下,promise.set_值失败,出现未知错误

C++ C++;在linux下,promise.set_值失败,出现未知错误,c++,c++11,future,C++,C++11,Future,我正在尝试让我的模拟在我们的高性能服务器上运行。不幸的是,它使用的是CentOS Linux 7.7.1908版(Core),而不是Win10,我正在Win10下开发该程序。随之而来的是大量错误,其中一个我无法解决: #include <future> #include <iostream> int main(int argument_count, char** arguments) { int i = 1234; std::cout <<

我正在尝试让我的模拟在我们的高性能服务器上运行。不幸的是,它使用的是CentOS Linux 7.7.1908版(Core),而不是Win10,我正在Win10下开发该程序。随之而来的是大量错误,其中一个我无法解决:

#include <future>
#include <iostream>

int main(int argument_count, char** arguments) {
    int i = 1234;
    std::cout << "Initialized i" << std::endl;

    std::promise<int> promise;
    std::cout << "Constructed promise" << std::endl;

    promise.set_value(std::move(i));
    std::cout << "Set value" << std::endl;

    std::future<int> future = std::move(promise.get_future());
    std::cout << "Retrieved future" << std::endl;

    int j = std::move(future.get());
    std::cout << "Got value: " << j << std::endl;

    return 0;
}
#包括
#包括
int main(int参数\ u计数,字符**参数){
int i=1234;

std::cout尝试使用
pthread
标志编译:


g++-std=c++11 test.cpp-pthread
尝试使用
pthread
标志编译:


g++-std=c++11 test.cpp-pthread

解决了这个问题。你能详细说明一下吗?为什么纯标准行为必须包含非标准编译器标志?据我所知,这向编译器/链接器建议,在程序中使用多线程,因此pthread库y是必需的。如果此标志不存在,为什么编译时不会出现错误?这是因为gthreads是围绕pthreads的抽象层,std::thread只知道线程在运行时不可用的时间。此外,编译(更不用说链接了)进程不是由C++标准覆盖的,不方便,是的,但应该知道,也可以违反直觉。你必须理解, <代码>使用 <代码>这是C++标准中定义的一个相对高的抽象级别。然而,如何实现代码> >代码>取决于OS,即库M。可以不同。如果您的问题得到解决,您能将响应标记为已接受吗?这解决了问题。您能详细说明一下吗?为什么必须为纯标准行为包含非标准编译器标志?据我所知,这向编译器/链接器建议,在程序中使用多线程功能因此pthread库ist是必需的。如果该标志不存在,为什么编译时不会出现错误?这是因为gthreads是围绕pthreads的抽象层,std::thread只知道线程在运行时不可用的时间。此外,编译(更不用说链接)进程不是由C++标准覆盖的,不方便,是的,但应该知道,也可以违反直觉。你必须理解, <代码>使用 <代码>这是C++标准中定义的一个相对高的抽象级别。然而,如何实现代码> >代码>取决于OS,即库M。可以。如果您的问题得到解决,您能否将响应标记为已接受?