none
Hilos y rendimiento del CPU RRS feed

  • Pregunta

  • Hola, buen día!

    Tengo un proyecto en Winforms de un chat con cliente y servidor. El servidor utiliza un Thread para estar a la espera de que alguien se conecte. El problema es que utiliza muchos recursos de la computadora.

    Este es el Thread:

    Y esta es la tarea que ejecuta:

    Y al momento de tenerlo en ejecución la pc comienza a estar muy lenta, entonces al revisar, veo que gasta entre el 95% al 99% de los recursos.

    Mi pregunta es: Como puedo hacer o que podría implementar para que no utilice tantos recursos de la pc?


    JK

    viernes, 20 de septiembre de 2019 14:33

Respuestas

  • Sugerencia: Pon algo en el "catch" para que si hay un error no pase desapercibido.

    La sospecha es que algo falla dentro del Try (por ejemplo, el puerto esta ocupado o el codigo no tiene permiso para abrirlo -- solo es un ejemplo, no afirmo que este pasando precisamente eso), y entonces salta al catch, no nos enteramos (porque esta vacio), y sale del hilo. Entonces vuelve al join y sale de ese bloque que crea el Thread. Lo mas normal es que ese bloque este dentro de algun bucle, que vuelve a lanzar el Thread en caso de que se pare. Compruebalo, porque si es asi, entonces ese seria el bucle que rodaria sin parar consumiento del 100% de la CPU.

    viernes, 20 de septiembre de 2019 15:18
    Moderador
  • Hola, muchas gracias por la sugerencia.

    Estuve conectando algunos clientes para ver si había algún error en el catch, pero todo funciona con normalidad, acepta la conexión del cliente, manda un mensaje de que el usuario se conectó y regresa al AcceptTcpClient() esperando otra conexión. Al parecer no entra al catch.


    JK

    viernes, 20 de septiembre de 2019 15:49

Todas las respuestas

  • Sugerencia: Pon algo en el "catch" para que si hay un error no pase desapercibido.

    La sospecha es que algo falla dentro del Try (por ejemplo, el puerto esta ocupado o el codigo no tiene permiso para abrirlo -- solo es un ejemplo, no afirmo que este pasando precisamente eso), y entonces salta al catch, no nos enteramos (porque esta vacio), y sale del hilo. Entonces vuelve al join y sale de ese bloque que crea el Thread. Lo mas normal es que ese bloque este dentro de algun bucle, que vuelve a lanzar el Thread en caso de que se pare. Compruebalo, porque si es asi, entonces ese seria el bucle que rodaria sin parar consumiento del 100% de la CPU.

    viernes, 20 de septiembre de 2019 15:18
    Moderador
  • Hola, muchas gracias por la sugerencia.

    Estuve conectando algunos clientes para ver si había algún error en el catch, pero todo funciona con normalidad, acepta la conexión del cliente, manda un mensaje de que el usuario se conectó y regresa al AcceptTcpClient() esperando otra conexión. Al parecer no entra al catch.


    JK

    viernes, 20 de septiembre de 2019 15:49