Ho la seguente classeRandom.Next() restituisce talvolta stesso numero in thread separati
class Program
{
static Random _Random = new Random();
static void Main(string[] args)
{
...
for (int i = 0; i < no_threads; ++i)
{
var thread = new Thread(new ThreadStart(Send));
thread.Start();
}
...
}
static void Send()
{
...
int device_id = _Random.Next(999999);
...
}
}
Il codice crea il numero specificato di fili, inizia ciascuno, e assegna ogni thread un casuale device_id
. Per qualche motivo, i primi due thread creati spesso hanno lo stesso device_id
. Non riesco a capire perché questo succede.
Questo è statisticamente corretto, come se si lancia 2 dadi che a volte ti danno lo stesso numero, più casuale non è thread-safe - > http://blogs.msdn.com/b/pfxteam/archive/2009/02/19/9434171.aspx – dvhh
@Mitch: nessuna delle domande collegate ha a che fare con la stessa situazione. È solo la sicurezza del thread che è rilevante qui, poiché c'è solo un'istanza di Random. –
@Jon: sì, è vero. –