システム上で簡単なスレッドを作成して実行しました。このプログラムを実行すると、次のエラー メッセージが表示されます:std::thread を使用するにはマルチスレッドを有効にしてください: 操作は許可されていません
私のシステムについての詳細:
- リナックス ウブントゥ 13.10
- 4.8.1 より
ライブラリを含むソースコードをコンパイルするpthread
ソースコード:
#include <iostream>
#include <thread>
using namespace std;
void func(void) {
cout << "test thread" << endl;
}
int main() {
cout << "start" << endl;
thread t1 (func);
t1.join();
cout << "end" << endl;
return 0;
}
ベストアンサー1
C++11スレッドを使用しようとしているようです。もしそれが本当なら、
- 正しい
#include <thread>
および、つまり、これらの行では#include <iostream>
を使用せず、その前に を追加します。"
#
- コンパイルする
g++ -std=c++11 q.cpp -lpthread
(新しい g++ では依存関係の順序が重要)
-pthread
ヒント: 静的にリンクされたライブラリでスレッドを使用し、このライブラリを実行可能ファイルで使用する場合は、実行可能ファイルのリンク コマンドにフラグを追加する必要があります。例:
g++ Obj1.o Obj2.o MyStaticLib.a -o MyExecutable -pthread