小编Spa*_*Ace的帖子

C++:使用packaged_task进行核心转储

我得到了一个奇怪的核心转储,我从http://en.cppreference.com/w/cpp/thread/packaged_task中的一部分代码中复制了这个转储,

#include <future>
#include <iostream>
#include <cmath>

void task_lambda() {
    std::packaged_task<int(int,int)> task([](int a, int b) {
        return std::pow(a, b);
    });
    std::future<int> result = task.get_future();

    task(2, 9);

    std::cout << "task_lambda:\t" << result.get() << '\n';
}


int main() {
    task_lambda();
}
Run Code Online (Sandbox Code Playgroud)

我懂了

terminate called after throwing an instance of 'std::system_error'
  what():  Unknown error -1
[1]    28373 abort (core dumped)  ./a.out
Run Code Online (Sandbox Code Playgroud)

调用堆栈如下所示:

#0  0x00007ffff71a2428 in __GI_raise (sig=sig@entry=6) at              ../sysdeps/unix/sysv/linux/raise.c:54
#1  0x00007ffff71a402a in __GI_abort () at abort.c:89
#2  0x00007ffff7ae484d in __gnu_cxx::__verbose_terminate_handler() () …
Run Code Online (Sandbox Code Playgroud)

c++ gcc g++ c++11

5
推荐指数
1
解决办法
366
查看次数

标签 统计

c++ ×1

c++11 ×1

g++ ×1

gcc ×1