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:
Alternativ können Sie das void*
Argument dem thread
Konstruktor bereitstellen:
Wie auch immer, stellen Sie sicher, dass Sie mit -pthread
kompilieren.
Tags und Links c++ multithreading c++11 linux