如何在使用线程的简单 C++ 程序中避免编译错误 'std::system_error'
How to avoid compilation error 'std::system_error' in simple c++ program using thread
我正在 Code::Block IDE
中测试一个简单的 C++ 线程程序
#include <iostream>
#include <thread>
using namespace std;
void thread_function()
{
std::cout<<"Function1 thread is running\n";
}
int main()
{
std::thread t1(thread_function);
t1.join();
return 0;
}
它给出以下 运行 时间错误
terminate called after throwing as instance of 'std::system_error'
what(): Enable multithreading to use std::thread: Operation not permitted
Aborted(core dumped)
但是当我使用
手动编译代码时
g++ -std=c++11 -pthread main.cpp
它编译并且 运行 没有任何错误。
我已经将 Code::Block 编译器更改为 g++ c++11,但仍然出现错误。
谁能告诉我如何解决 Code::Block IDE
中的这个问题
看起来当你 link 你的程序 Code::Blocks “-pthread” 选项没有启用。您需要为 linker 选项添加它(注意不要添加 -pthread 库,而是将其作为选项添加)。
我正在 Code::Block IDE
中测试一个简单的 C++ 线程程序#include <iostream>
#include <thread>
using namespace std;
void thread_function()
{
std::cout<<"Function1 thread is running\n";
}
int main()
{
std::thread t1(thread_function);
t1.join();
return 0;
}
它给出以下 运行 时间错误
terminate called after throwing as instance of 'std::system_error'
what(): Enable multithreading to use std::thread: Operation not permitted
Aborted(core dumped)
但是当我使用
手动编译代码时g++ -std=c++11 -pthread main.cpp
它编译并且 运行 没有任何错误。 我已经将 Code::Block 编译器更改为 g++ c++11,但仍然出现错误。 谁能告诉我如何解决 Code::Block IDE
中的这个问题看起来当你 link 你的程序 Code::Blocks “-pthread” 选项没有启用。您需要为 linker 选项添加它(注意不要添加 -pthread 库,而是将其作为选项添加)。