首页 > 解决方案 > 为什么 std::thread::join 在这里出现段错误?

问题描述

好的,我在 10 分钟前遇到了这个问题。下面是一个代码片段,SEGFAULTs 就在join()语句中,没有任何特殊原因。就我而言,代码是正确的(我在大型服务器应用程序中遇到了同样的问题,所以我从互联网上复制粘贴了这个工作片段):

#include <iostream>
#include <thread>

int main() {
    std::thread t([]() {
        std::cout << __LINE__ << std::endl;
        std::this_thread::sleep_for(std::chrono::seconds(10));
        std::cout << __LINE__ << std::endl;
    });
    std::cout << __LINE__ << std::endl;
    std::this_thread::sleep_for(std::chrono::seconds(1));
    t.join();
    std::cout << __LINE__ << std::endl;
    return 0;
}

这里到底有什么问题?编译...

u@p:~$ g++ --version
g++ (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

...经过...

g++ main.cpp -lpthread

标签: c++multithreadingsegmentation-faultpthreads

解决方案


推荐阅读