Abbiamo una situazione in cui vogliamo limitare il numero di richieste paralell che la nostra applicazione può apportare al suo server applicazioni. Abbiamo potenzialmente più di 100 thread in background in esecuzione che vorranno a un certo punto effettuare una chiamata al server delle applicazioni ma vogliono solo 5 thread per poter chiamare SendMessage() (o qualunque sia il metodo) in qualsiasi momento. Qual è il modo migliore per raggiungere questo obiettivo?Limitare il numero di thread che eseguono un metodo in una sola volta
Ho considerato l'utilizzo di una sorta di oggetto gatekeeper che blocca i thread che arrivano nel metodo finché il numero di thread in esecuzione non è sceso sotto la soglia. Questa sarebbe una soluzione ragionevole o sto trascurando il fatto che questo potrebbe essere sporco/pericoloso?
Stiamo sviluppando in C# .NET 3.5.
Grazie,
Steve
probabilmente si desidera rilasciare il semaforo anche se un'eccezione * non viene * generata. Inseriscilo nel blocco finally –
oops, il mio male, grazie – LorenVS
L'attributo di sincronizzazione a livello di metodo non è valido. Si blocca su "questo" per esempio i membri e ancor peggio, il tipo per i membri statici. Non dovrebbe mai essere usato. – Josh