gpt4 book ai didi

c++11异步段错误

转载 作者:IT老高 更新时间:2023-10-28 21:42:17 26 4
gpt4 key购买 nike

我只是在 GCC 4.7.2 中尝试一些新的 C++11 功能,但是当我运行时会出现 seg 错误。

$ ./a.out
Message from main.
terminate called after throwing an instance of 'std::system_error'
what(): Unknown error -1
Aborted (core dumped)

关于 c++0x,我使用 GCC 的“测试版”功能进行编译:

g++ -std=c++11 c11.cpp

代码:

#include <future>
#include <iostream>

void called_from_async() {
std::cout << "Async call" << std::endl;
}

int main() {
//called_from_async launched in a separate thread if possible
std::future<void> result( std::async(called_from_async));

std::cout << "Message from main." << std::endl;

//ensure that called_from_async is launched synchronously
//if it wasn't already launched
result.get();

return 0;
}

最佳答案

我相信这是因为您忘记链接 POSIX 线程库。只需将 -pthread-lpthread 添加到 g++ 标志,问题就会消失。

如果您对细节感兴趣,这是因为只有在您碰巧使用这些功能时,C++11 运行时才会在运行时解析来自 pthread 的符号。因此,如果您忘记链接,运行时将无法解析这些符号,将您的环境视为不支持线程,并抛出异常(您没有捕获并中止您的应用程序)。

关于c++11异步段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12962791/

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