Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di barney09
    Registrato dal
    Dec 2000
    Messaggi
    1,296

    [VB 6] Priorità nei processi

    Ho un applicazione che lavora molto di CPU.

    Di default ha la massima priorità sui processi sul PC?

    c'è modo di settare il programma, in modo che abbia a disposizione

    il massimo di risorse possibili sul pc?

    grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Cosa fa di tanto particolare e specifico con la CPU?

  3. #3
    Utente di HTML.it L'avatar di barney09
    Registrato dal
    Dec 2000
    Messaggi
    1,296
    fa moltissimi controlli su delle stringhe di mille caratteri, le rigira e le ricompone, per poi riscriverle su disco...


    diciamo che la cpu è sempre al 50 %....


    Aumentando la priorità, posso ottenere una maggiore velocità di elaborazione???

  4. #4
    codice:
    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 Const THREAD_BASE_PRIORITY_MAX = 2
    Private Const THREAD_PRIORITY_NORMAL = 0
    Private Const THREAD_BASE_PRIORITY_MIN = -2
    
    Public Enum Priority
        Alta = &H80
        Normale = &H20
        Bassa = &H40
    End Enum
    
    
    
    Public Function setPriority(ClassePriorità As Priority)
    Dim hThread As Long
    Dim hProcess As Long
    
        hThread = GetCurrentThread
        hProcess = GetCurrentProcess
        
        If GetPriorityClass(hProcess) <> ClassePriorità Then
            Select Case ClassePriorità
                Case Is = Alta
                    SetThreadPriority hThread, THREAD_BASE_PRIORITY_MAX
                Case Is = Normale
                    SetThreadPriority hThread, THREAD_PRIORITY_NORMAL
                Case Is = Bassa
                    SetThreadPriority hThread, THREAD_BASE_PRIORITY_MIN
            End Select
            
            SetPriorityClass hProcess, ClassePriorità
        End If
    
    End Function
    per chiamarla

    codice:
    call setpriority(alta)
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sì ... ma non credo guadagnerai molto ...

    Le operazioni di I/O su disco sono "lente" e sono in gran numero ...

    E poi non e' mai consigliabile alterare (anche se temporaneamente) la priorita' dei processi ...

    Non succede nulla di particolare, intendiamoci ...

    Probabilmente, otterresti un miglioramento in termini di percentuale di occupazione della CPU se, nel ciclo di trattamento inserissi una pausa del thread di 1 ms con la API

    Sleep 1

  6. #6
    Utente di HTML.it L'avatar di barney09
    Registrato dal
    Dec 2000
    Messaggi
    1,296
    grazie...


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.