OVH Cloud OVH Cloud

Comment limiter la charge du microprocesseur ?

2 réponses
Avatar
Giques
Bonjour à tous,

Je m'explique, je suis en train d'écrire une procédure qui va trier et
analyser énormément de donnée dans une table accès. Le fait de lancer cette
procédure monopolise les ressources du MicroProcesseur.

Peut-on limiter l'utilisation du microprocesseur à 50% et laisser le reste
de la puissance pour les taches courantes ?

Ceci me permettrait de continuer à travailler sur l'ordi même si la
procédure de tri se met à tourner.

Merci de votre aide

Giques

2 réponses

Avatar
Quasimodo
Giques pretended :
Bonjour à tous,

Je m'explique, je suis en train d'écrire une procédure qui va trier et
analyser énormément de donnée dans une table accès. Le fait de lancer cette
procédure monopolise les ressources du MicroProcesseur.

Peut-on limiter l'utilisation du microprocesseur à 50% et laisser le reste
de la puissance pour les taches courantes ?

Ceci me permettrait de continuer à travailler sur l'ordi même si la
procédure de tri se met à tourner.

Merci de votre aide

Giques



Bonjour,
oui, il existe des moyens. Je ne les connais pas. Mais voici déjà une
bonne piste, l'utilisation des doevents dans les boucles et à d'autres
lieux stratégique permet une meilleur gestion des ressources.

@+ Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Avatar
ng
Salut,

Essaye avec SetThreadPriority() ou SetPriorityClass() :

Const THREAD_BASE_PRIORITY_IDLE = -15
Const THREAD_BASE_PRIORITY_LOWRT = 15
Const THREAD_BASE_PRIORITY_MIN = -2
Const THREAD_BASE_PRIORITY_MAX = 2
Const THREAD_PRIORITY_LOWEST = THREAD_BASE_PRIORITY_MIN
Const THREAD_PRIORITY_HIGHEST = THREAD_BASE_PRIORITY_MAX
Const THREAD_PRIORITY_BELOW_NORMAL = (THREAD_PRIORITY_LOWEST + 1)
Const THREAD_PRIORITY_ABOVE_NORMAL = (THREAD_PRIORITY_HIGHEST - 1)
Const THREAD_PRIORITY_IDLE = THREAD_BASE_PRIORITY_IDLE
Const THREAD_PRIORITY_NORMAL = 0
Const THREAD_PRIORITY_TIME_CRITICAL = THREAD_BASE_PRIORITY_LOWRT
Const HIGH_PRIORITY_CLASS = &H80
Const IDLE_PRIORITY_CLASS = &H40
Const NORMAL_PRIORITY_CLASS = &H20
Const REALTIME_PRIORITY_CLASS = &H100
Private Declare Function SetThreadPriority Lib "kernel32" (ByVal hThread As
Long, ByVal nPriority As Long) As Long
Private Declare Function SetPriorityClass Lib "kernel32" (ByVal hProcess As
Long, ByVal dwPriorityClass As Long) As Long
Private Declare Function GetThreadPriority Lib "kernel32" (ByVal hThread As
Long) As Long
Private Declare Function GetPriorityClass Lib "kernel32" (ByVal hProcess As
Long) As Long
Private Declare Function GetCurrentThread Lib "kernel32" () As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Sub Form_Load()

Dim hThread As Long, hProcess As Long

hThread = GetCurrentThread()
hProcess = GetCurrentProcess()

Call SetThreadPriority(hThread, THREAD_PRIORITY_LOWEST)
Call SetPriorityClass(hProcess, IDLE_PRIORITY_CLASS)

End Sub



Cf doc dans la MSDN et l'API Guide.


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Giques wrote:
Bonjour à tous,

Je m'explique, je suis en train d'écrire une procédure qui va trier et
analyser énormément de donnée dans une table accès. Le fait de
lancer cette procédure monopolise les ressources du MicroProcesseur.

Peut-on limiter l'utilisation du microprocesseur à 50% et laisser le
reste de la puissance pour les taches courantes ?

Ceci me permettrait de continuer à travailler sur l'ordi même si la
procédure de tri se met à tourner.

Merci de votre aide

Giques