Wenn ich die CreateThread-API-Methode verwenden, was muss ich tun, wenn ich mehr als einen Parameter, wo LPVOID lpParameter übergeben wird, übergeben möchte ?mehrere Argumente CreateThread-Funktion
Antwort
können Sie eine Struktur erstellen, die alle relevanten Daten enthält und einen Zeiger auf eine Instanz dieser Struktur (gefüllt mit den entsprechenden Parametern) passieren zu CreateThread()
In Thread Erstellungsfunktion müssen Sie die LPVOID
zurück werfen zu einem Zeiger auf Ihre Struktur, um es zu verwenden.
Setzen Sie diese Argumente in eine Struktur, die auf dem Heap zugeordnet ist, und übergeben Sie die Adresse der Struktur im Parameter LPVOID
. Ihre Thread-Funktion kann dann die LPVOID
in einen Zeiger auf struct umwandeln und die Parameter auslesen.
Es ist wichtig, dass Sie es auf den Heap setzen, denn wenn Sie es auf den Stack des Threads setzen, der CreateThread
aufruft, dann kann es ungültig sein, wenn Ihre Thread-Prozedur versucht, darauf zuzugreifen.