Windows C ++ trådparameterpasning

Indlæg af Hanne Mølgaard Plasc

Problem



I Windows c ++ skaber følgende en tråd:


CreateThread(NULL, NULL, function, parameter, NULL, &threadID);


Dette vil køre 'funktion' i en ny tråd og sende den 'parameter' som et tomrum * eller LPVOID.


Antag at jeg vil passere to parametre i 'funktion', er der en bedre udseende til at lave det udover at oprette en datastruktur, der indeholder to variabler og derefter støbning af datastrukturen som en LPVOID?

Bedste reference


Nej, det er den eneste måde. Bare lav en struktur med de 2 data medlemmer og send det som ugyldigt *

Andre referencer 1


Det er standardmetoden til at sende en parameter til tråden, men din nye tråd kan ikke få adgang til nogen hukommelse i processen, så noget, der er svært at passere, eller mange data kan fås som en delt ressource, så længe du giver passende synkroniseringskontrol .

Andre referencer 2


Jeg tror, ​​at der er en meget bedre måde, og jeg bruger det hele tiden i min indlejrede kode. Det voksede faktisk ud af ønsket om at overføre et medlemmet til en funktion, der ligner meget på CreateThread (). Grunden til at ønske var, at klassen allerede havde som medlemsdata (med passende settere) alle de parametre, som trådkoden havde brug for. Jeg skrev en mere detaljeret forklaring, som du kan henvise til, hvis du er interesseret. I opskrivningen, hvor du ser OSTaskCreate (), skal du bare mentalt erstatte CreateMethod (). [2]