Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#] Utilizzo CPU e cicli infiniti.
Forum - C# / VB.NET - [C#] Utilizzo CPU e cicli infiniti.

Avatar
Exit93 (Ex-Member)
Rookie


Messaggi: 34
Iscritto: 31/03/2008

Segnala al moderatore
Postato alle 11:18
Mercoledì, 09/02/2011
Sto scrivendo un server di gioco, per le connessioni uso tcpclient e tcplistener.
Il problema è che per controllare ci sono connessioni in attesa utilizzo un ciclo infinito che però usa costantemente il 25% del calcolo del processore, per ovviare a questo ho temporaneamente usato un thread.sleep ma mi chiedevo se ci fosse un altro modo per non perderne in velocità.

Qui il codice attuale.
Codice sorgente - presumibilmente C# / VB.NET

  1. while (true)
  2.             {
  3.                 Thread.Sleep(100);
  4.                 if (listener.Pending())
  5.                 {
  6.                     Client cl = new Client(listener.AcceptTcpClient());
  7.                 }
  8.             }



EDIT:
E per quest'altro ciclo come potrei risolvere?
Codice sorgente - presumibilmente C# / VB.NET

  1. while (client.Connected)
  2.             {
  3.                 if (client.Available > 0)
  4.                 {
  5.                     react();
  6.                 }
  7.             }


Ultima modifica effettuata da Exit93 il 09/02/2011 alle 12:03
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
2
Down
V
Segnala al moderatore
Postato alle 11:24
Mercoledì, 09/02/2011
asd ma dai :)

Codice sorgente - presumibilmente C# / VB.NET

  1. for (;;) {
  2.  
  3.     // AcceptTcpClient è bloccante: quando c'è ritorna
  4.     Client cl = new Client(listener.AcceptTcpClient());
  5.  
  6. }


Grazie, funziona alla perfezione! non sapevo fosse bloccante, cmq ho aggiunto un altro ciclo che usa tanta cpu, come potrei risolverlo secondo te? - Exit93 - 09/02/11 11:37
PM