gpt4 book ai didi

c++ - 什么导致运行时错误消息:std::system_error - 不允许操作,包括多线程?

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

2022 年更新

C++ 17 和 20 现在在标准库中内置了对多线程的支持。我建议使用这些而不是使用 Linux 特定的 pthread 库。

原始问题

我编写了一个程序来测试 64 位 kubuntu linux 版本 13.04 上的线程。实际上是我从正在编写测试程序的其他人那里窃取了代码。

#include <cstdlib>
#include <iostream>
#include <thread>

void task1(const std::string msg)
{
std::cout << "task1 says: " << msg << std::endl;
}

int main(int argc, char **argv)
{
std::thread t1(task1, "Hello");
t1.join();

return EXIT_SUCCESS;
}

我编译使用:

g++ -pthread -std=c++11 -c main.cpp
g++ main.o -o main.out

然后跑:

./main.out

顺便说一句,当我输入“ls -l”时,main.out 与所有可执行文件一样以绿色文本显示,但名称末尾也有一个星号。这是为什么呢?

回到手头的问题:我跑main.out的时候,出现了一个错误,里面说:

terminate called after throwing an instance of 'std::system_error'
what(): Operation not permitted
Aborted (core dumped)

有人知道如何解决这个问题吗?

最佳答案

您没有正确链接 pthread,请尝试以下命令(注意:顺序很重要)

g++  main.cpp -o main.out -pthread -std=c++11

用两个命令来做

g++ -c main.cpp -pthread -std=c++11         // generate target object file
g++ main.o -o main.out -pthread -std=c++11 // link to target binary

关于c++ - 什么导致运行时错误消息:std::system_error - 不允许操作,包括多线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17274032/

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