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)
有人有解决这个问题的想法吗?