CPU-Auslastung beim Server veringern

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

CPU-Auslastung beim Server veringern

Beitrag von Sunny »

Ich hab mir mal den Server im Beispiel von PureBasic angesehen

Server:

Code: Alles auswählen

If InitNetwork() = 0
  MessageRequester("Error", "Can't initialize the network !", 0)
  End
EndIf

Port = 6832
*Buffer = AllocateMemory(1000)

If CreateNetworkServer(0, Port)

  MessageRequester("PureBasic - Server", "Server created (Port "+Str(Port)+").", 0)
  
  Repeat
      
    SEvent = NetworkServerEvent()
  
    If SEvent
    
      ClientID = EventClient()
  
      Select SEvent
      
        Case 1
          MessageRequester("PureBasic - Server", "A new client has connected !", 0)
  
        Case 2
          MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has send a packet !", 0)
          ReceiveNetworkData(ClientID, *Buffer, 1000)
          MessageRequester("Info", "String: "+PeekS(*Buffer), 0)
  
        Case 3
          MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has send a file via the network !", 0)
          ReceiveNetworkFile(ClientID, "C:\TEST_Network.ftp3")
  
        Case 4
          MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has closed the connexion...", 0)
          Quit = 1
    
      EndSelect
    EndIf
    
  Until Quit = 1 
  
  MessageRequester("PureBasic - Server", "Click to quit the server.", 0)
  
  CloseNetworkServer(0)
Else
  MessageRequester("Error", "Can't create the server (port in use ?).", 0)
EndIf

  
End
und festgestellt, dass der ne ziemlich hohe CPU-Auslastung hat.

Meine Frage ist jetzt, was kann ich tun, um die CPU-Auslastung etwas geringer zu halten???
php-freak
Beiträge: 536
Registriert: 07.02.2009 18:08

Beitrag von php-freak »

DAS WEIß ICH :mrgreen:

Code:

Code: Alles auswählen

If InitNetwork() = 0
  MessageRequester("Error", "Can't initialize the network !", 0)
  End
EndIf

Port = 6832
*Buffer = AllocateMemory(1000)

If CreateNetworkServer(0, Port)

  MessageRequester("PureBasic - Server", "Server created (Port "+Str(Port)+").", 0)
 
  Repeat
  Delay(10)   
    SEvent = NetworkServerEvent()
 
    If SEvent
   
      ClientID = EventClient()
 
      Select SEvent
     
        Case 1
          MessageRequester("PureBasic - Server", "A new client has connected !", 0)
 
        Case 2
          MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has send a packet !", 0)
          ReceiveNetworkData(ClientID, *Buffer, 1000)
          MessageRequester("Info", "String: "+PeekS(*Buffer), 0)
 
        Case 3
          MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has send a file via the network !", 0)
          ReceiveNetworkFile(ClientID, "C:\TEST_Network.ftp3")
 
        Case 4
          MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has closed the connexion...", 0)
          Quit = 1
   
      EndSelect
    EndIf
   
  Until Quit = 1
 
  MessageRequester("PureBasic - Server", "Click to quit the server.", 0)
 
  CloseNetworkServer(0)
Else
  MessageRequester("Error", "Can't create the server (port in use ?).", 0)
EndIf

 
End 
delay(10) verwenden! Dann wartet er 10ms! Sonnst versucht er es so oft zu durchlaufen wie er kann!
PureBasic 4.30 (x86)
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Eigentlich sollte man einen Delay nur bei einem NetworkServerEvent() = 0 benutzen.
Wenn der Server am arbeiten ist, will ich ihn ja nicht unnötig ausbremsen.
(Wenn eh nur MickyMaus-Pakete hin- und hergeschickt werden, ist es aber auch wurscht).
Benutzeravatar
Regenduft
Beiträge: 574
Registriert: 25.03.2008 15:07
Wohnort: THE LÄÄÄND!

Beitrag von Regenduft »

php-freak hat geschrieben:DAS WEIß ICH :mrgreen:
Mann, mann, mann... schon das zweite falsche ß im Versalsatz and einem Tag... (hier müssen mal ein paar Shift-Tasten demontiert werden) :wink:
PureBasic 5.73 LTE x86/x64 | Windows 7 (x64)
Antworten