में एक ही नंबर देता है मैं निम्नलिखित वर्गRandom.Next() कभी कभी अलग धागे
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);
...
}
}
कोड धागे की निर्धारित संख्या, हर एक शुरू होता है बनाता है, और प्रत्येक थ्रेड एक यादृच्छिक device_id
प्रदान करती है। किसी कारण से, बनाए गए पहले दो धागे अक्सर device_id
होते हैं। मैं यह नहीं समझ सकता कि ऐसा क्यों होता है।
यह सांख्यिकीय रूप से सही है, के रूप में यदि आप 2 पासा फेंक वे कुछ समय आप एक ही नंबर दे, प्लस रैंडम सुरक्षित थ्रेड नहीं है - > http://blogs.msdn.com/b/pfxteam/archive/2009/02/19/9434171.aspx – dvhh
@ मिच: किसी भी लिंक किए गए प्रश्न एक ही स्थिति से निपट रहे हैं। यह केवल थ्रेड सुरक्षा है जो यहां प्रासंगिक है, क्योंकि रैंडम का केवल एक उदाहरण है। –
@ जोन: हाँ, यह सच है। –