Meilleur auteur de réponses
Urgent : Fonction Sleep(0)-> cpu 50%

Question
-
Bonjour,
j'ai un problème sur une application crée sous VC++ qui tourne sur un server OS: windows 2003 server avec une architecture de processeur multicore.
La lib utilisée est wxWidget.
Mon problème étant que je dois réaliser un timer très précis à 50ms.
quand ce timer claque toutes les 50 ms je poste un jeton.
Bref entre ce temps d'attente je dois relâcher la main au système et pour cela j'utilise Sleep(0).
Tout ce passe pour le mieux sauf que mon cpu est à 50% et à la longue cela va écourter la vie du processeur.
(Je suppose selon les tutos sur Sleep que cette fonction relâche la main et n'ayant pas de thread plus prioritaire elle retourne immédiatement à sa tâche).
Je dois donc palier à ça mais je n'ai plus d'idée sur l'alternative à donner à la fonction Sleep.
J'ai essayer Sleep(1) mais le timer n'est plus aussi précis.
SleepEx(0,true) descendre le CPU à 46% mais c'est pas encore assez.
ci joint mon extrait de code.
wxStopWatch sw;
// Returns true if the thread was asked to terminate: this function should
// be called by the thread from time to time, otherwise the main thread
// will be left forever in Delete()!
while(!TestDestroy()){
if (sw.Time() >= (long)TIMER_VALUE){
//si au moins 50ms se sont écoulées depuis le dernier test on
//remet le stopwatch à 0 et on autorise le dépîlement
sw.Start(0);
m_poSemaphore->Post();
}else{
//si 50 ms ne se sont pas écoulées, on attent
Sleep(0);
}
}D'avance merci.
zouz
Réponses
-
pour une fonction avec IHM : SetTimer
http://msdn.microsoft.com/en-us/library/ms644906
CreateTimerQueueTimer :
http://msdn.microsoft.com/en-us/library/ms682485(v=VS.85).aspx
En résumé, callback à tous les étages ;-)
Sleep, c'est sale, très sale ;-]
Paul Bacelar, Ex - MVP VC++- Marqué comme réponse Alex Petrescu mardi 29 juin 2010 08:32
Toutes les réponses
-
pour une fonction avec IHM : SetTimer
http://msdn.microsoft.com/en-us/library/ms644906
CreateTimerQueueTimer :
http://msdn.microsoft.com/en-us/library/ms682485(v=VS.85).aspx
En résumé, callback à tous les étages ;-)
Sleep, c'est sale, très sale ;-]
Paul Bacelar, Ex - MVP VC++- Marqué comme réponse Alex Petrescu mardi 29 juin 2010 08:32
-
Bonjour,
Merci M. Bacelar pour la réponse ! Peyramay1, avez-vous réussi la continuation de votre projet à partir de ces exemples ?
Cordialement,
Alex
________________
Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007
Astuces pour Visual Studio 2010
Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation, WPF
Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.