Métodos Sincronos em Threads

Pessoal, hoje precisei usar algo interessante. Métodos sincronos.
 
Precisei disso para fazer o controle de conexões simultâneas, onde o máximo são 3. Para fazer o controle de quem está usando as conexões usei uma variável INT, mas quando eu executava fazendo o teste de stress, dava algo errado, passava as 3 conexões…
 
Isso ocorria pela velocidade de execução das threads, onde somente métodos sincronizados (que executam um a um) poderiam resolver. Então encontrei uma maneira simples e interessante de fazer:
 

using System.Runtime.CompilerServices;

 
[MethodImpl(MethodImplOptions.Synchronized)]
public static bool Executar()
{
  return Pool <= MaxConexoes;
}

[MethodImpl(MethodImplOptions.Synchronized)]

public static void IncrementarPool()
{
  Pool++;
}

[MethodImpl(MethodImplOptions.Synchronized)]

public static void DecrementarPool()
{
  Pool–;
}

Interessante não?

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s