Ich habe folgende KlasseRandom.Next() gibt manchmal gleiche Anzahl in getrennten Threads
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);
...
}
}
der Code die angegebene Anzahl von Threads erzeugt, die jeweils einen beginnt, und weist jeden Thread ein zufälliges device_id
. Aus irgendeinem Grund haben die ersten zwei Threads, die erstellt werden, oft die gleichen device_id
. Ich kann nicht herausfinden, warum das passiert.
Dies ist statistisch korrekt, als ob Sie zwei Würfel werfen sie dich irgendwann geben die gleiche Anzahl plus Zufall ist nicht Thread-sicher - > http://blogs.msdn.com/b/pfxteam/archive/2009/02/19/9434171.aspx – dvhh
@Mitch: Keine der verknüpften Fragen beschäftigen sich mit der gleichen Situation. Es ist nur die Thread-Sicherheit, die hier relevant ist, da es nur eine Instanz von Random gibt. –
@Jon: Ja, das stimmt. –