Estou construindo um conjunto Cliente/Servidor, onde o servidor é em C#
e o cliente é em C++
nativo.
O meu servidor fica escutando uma determinada porta, aguardando a conexão de alguns clientes, o servidor também é multitarefa, podendo aceitar diversas conexões simultaneamente, porém estou com um problema muito preocupante, veja:
Até agora usei duas threads as duas executam um laço de repetição infinito:
- A primeira
thread
(com o laço infinito) fica constantemente verificando se há novas conexões a serem aceitas, se existe alguma, ela adiciona a conexão em umList<TcpClient>
. - A segunda
thread
(também com loop infinito) fica constantemente verificando se essas conexões estão ativas, ou seja, se alguma delas não estiver, ele remove ela doList<TcpClient>
.
O meu problema é que quando fui monitorar o consumo de recursos da aplicação pelo gerenciador de tarefas, percebi que está consumindo incríveis 30% do meu processador (I5 4460 3.2 GHz). Estou achando esse consumo absurdo para uma aplicação relativamente simples.
- Laços de repetições infinitos consomem tanto assim?
- Ou o fato de usar Threads já contribui para esse consumo?
- Como eu poderia resolver este problema?