Semáforo
// Cria um semáforo com um contador de 3
Dim sem As new Semaphore(3)
// Bloqueia até um contador disponível
sem.WaitOne()
// Usa o recurso protegido
// Release o semáforo
sem.Release()

| Um semáforo é criado com um contador, o qual representa um número total de threads que podem sem acessadas pelo recurso protegido. Para usar um semáforo, a thread chama o método WaitOne. Se o contador da chamada estiver disponível para retornar imediatamente, o contador é reduzido para 1. Se não estiver disponível para este pedido, então a instância bloqueia o pedido WaitOne até que o contador esteja disponível.
| Quando a thread usada for finalizada deverá chamar o método Release, o qual reduz o contador para 1.