C ++ 0x: thread, gcc oder mein Fehler?

8

Ist es GCC 4.7.0 oder bin ich es? Was mache ich falsch?

Dies löst eine std::system_error "Operation nicht erlaubt" Ausnahme aus:

%Vor%

solange das funktioniert:

%Vor%

Der Unterschied ist natürlich:

  • Der nicht funktionierende Code verwendet einen Functor (Klasse mit operator() )
  • Der Arbeitscode verwendet einen Funktionszeiger.

Verwenden Sie den Funktor irgendwo falsch? Ich kann nicht sehen, wo, oder? Ist es ein Hinweis darauf, dass das gdb dieses in seinem Stack hat:

%Vor%

Anmerkungen: Ich habe es auch versucht

  • Initialisiere zuerst DumbFib und gib ihm eine Member-Variable n_=35 , das gleiche Ergebnis.
  • Den Funktor direkt mit thread th{ DumbFib, 35 }; oder thread th{ DumbFib{}, 35 }; versehen
towi 09.09.2011, 09:24
quelle

2 Antworten

13

Wenn Sie Ihren Code mit g++ kompilieren, verwenden Sie die Option -pthread .

    
Jason 09.09.2011, 18:51
quelle
0

Ich hatte auch ein ähnliches Problem, und dank Jason, löste es mein Problem

Die genauen Optionen sind

%Vor%

Das muss ich in g ++ Version 4.6.3

tun     
ice-simx 11.06.2013 17:52
quelle

Tags und Links