7

私のプログラムは以下のようになります

#include <iostream>
#include <thread>
#include <exception>

void hello()
{
    std::cout << "Hello world!!!!" << std::endl;
}

int main()
{
    std::cout << "In Main\n";
    std::thread t(hello);
    t.join();
    return 0;
}

次のコマンドを使用してコンパイルすると、エラーは発生しません

g++-4.7 -std=c++11 main.cpp

しかし、実行すると次のエラーが発生します

メインで
「std::system_error」のインスタンスをスローした後に呼び出される終了
what(): 許可されていない操作
中止 (コアダンプ)

誰かが私が間違っているところを手伝ってくれますか?

4

5 に答える 5

10

GCC で C++11 スレッドを使用する場合、次を使用します。

g++ -std=c++0x -pthread -g main.cpp

それは私にとってはうまくいきます。

于 2012-11-05T07:14:28.877 に答える
6

でコードをコンパイルするときは、 オプションg++を使用し-pthreadます。

以下は、私がstackoverflowから見つけた答えです: In g++ is C++ 11 thread model using pthreads in the background?

于 2012-11-05T07:14:13.573 に答える
3

-pthread 引数をコンパイラに渡す必要があると誰もがすでに答えています。ほぼ確実に 4.8 では変更されませんが、 http://gcc.gnu.org/bugzilla/show_bug.cgi? id=52681によると、例外には少なくとも何が問題なのかを示す適切なメッセージが表示されます。

于 2012-11-06T23:53:42.683 に答える
0

あなたはで試すことができます、

g++ --std=c++11 -lpthread main.cpp
于 2015-06-02T13:21:57.923 に答える
0

pthread ライブラリに対してリンクする必要がある場合があります

于 2012-11-05T07:10:25.560 に答える