windows - C ++ Threading CPU-brugsproblem på ældre pc

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har brug for en ekspert s råd og mening om tråd brug. Jeg har en simpel 'plugin' DLL, som har 2-3 tråde, hver af dem er startet med \_beginthreadex () .


En tråd ser sådan ud:


unsigned \_\_stdcall Thread(void* pArguments)  
{  
    while ( true )  
    {
        // do something
        Sleep(3000);
    }
    \_endthreadex( 0 );  
    return 0;  
}


Nu har denne tråd ikke en høj CPU-brug, men det virker som forventet på de fleste nye pc'er, men jeg har opdaget, at der på ældre pc'er med dual core-CPU'er eksempelvis kører 2-3 tilfælde med denne gevindmetode det tager meget CPU. Jeg kan ikke forklare mig selv hvorfor, og jeg ved ikke hvad jeg skal gøre.


Jeg har også forsøgt CreateThread () , men det ændrer ikke. Kan nogen venligst guide mig, hvordan man laver en tråd, der vil køre på samme måde på alle pc'er? Hvis jeg gør noget forkert, så vær venlig at forklare mig hvad ...


Tak skal du have!

Bedste reference


\_beginthreadex er bare en wrapper til CreateThread. Og hvis du oplever en høj CPU-brug, er det sandsynligvis et problem med din 'gør noget' kode, der ikke har noget at gøre med den metode, der oprindeligt blev brugt til at oprette tråd. Undersøg din kode med profiler og kig efter raceforhold. Bemærk at det uddrag du skrev ud er faktisk brudt, fordi sløjfen ikke har nogen pause, og derfor har metoden ikke tilgængelig kode.