Kompilieren von C ++ - Threads

8

Ich versuche, Threads in meiner C ++ - Anwendung zu verwenden.

Mein Code ist:

%Vor%

Beim Kompilieren habe ich folgende Fehler:

%Vor%

und viel mehr ...

Ich kompiliere mit:

%Vor%

Die Compiler-Version:

%Vor%

Was mache ich falsch?

    
dv_ 23.06.2015, 19:45
quelle

2 Antworten

8

std::thread ist nicht dasselbe wie ein POSIX-Thread, es muss kein Argument void* und ein void* zurückgegeben werden. Der thread -Konstruktor kann alle Aufrufe übernehmen, solange Sie die richtigen Argumente angeben.

Der spezifische Fehler in diesem Fall ist, dass Sie versuchen, einen Thread zu starten, der tatsächlich c.code() (technisch INVOKE(&C::code, &c) ) aufruft, aber das ist ein ungültiger Aufruf, da C::code ein Argument benötigt und Sie versuchen, ihn aufzurufen es mit Null. Fixiere einfach die Signatur in code() , um dem zuzuordnen, mit dem du sie nennst:

%Vor%

Alternativ können Sie das void* Argument dem thread Konstruktor bereitstellen:

%Vor%

Wie auch immer, stellen Sie sicher, dass Sie mit -pthread kompilieren.

    
Barry 23.06.2015, 19:55
quelle
3

Machen Sie Ihre Klasse C mit dem Operator ()

zu einem aufrufbaren Objekt %Vor%

oder machen Sie Ihre Klasse zu einem aufrufbaren Objekt

%Vor%

und wechseln Sie zu --std = c ++ 11

    
marom 23.06.2015 19:54
quelle

Tags und Links