スレッドがエラーで動作しません: マルチスレッドを有効にして std::thread を使用します: 操作は許可されていません 質問する

スレッドがエラーで動作しません: マルチスレッドを有効にして std::thread を使用します: 操作は許可されていません 質問する

システム上で簡単なスレッドを作成して実行しました。このプログラムを実行すると、次のエラー メッセージが表示されます: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スレッドを使用しようとしているようです。もしそれが本当なら、

  1. 正しい#include <thread>および、つまり、これらの行では#include <iostream>を使用せず、その前に を追加します。"#
  2. コンパイルするg++ -std=c++11 q.cpp -lpthread(新しい g++ では依存関係の順序が重要)

-pthreadヒント: 静的にリンクされたライブラリでスレッドを使用し、このライブラリを実行可能ファイルで使用する場合は、実行可能ファイルのリンク コマンドにフラグを追加する必要があります。例:

g++ Obj1.o Obj2.o MyStaticLib.a -o MyExecutable -pthread

おすすめ記事