मेरा प्रोग्राम कुछ कार्यों के लिए कुछ धागे बनाता है।प्रबंधित थ्रेड आईडी अद्वितीय नहीं है?
मेरे कोड इस तरह है:
Dictionary<int, double> threadStates = new Dictionary<int, double>();
for (int i = 0; i < SubNNs.Count(); i++)
{
Thread tt = new Thread(StartTrainingSubs);
threadStates.Add(tt.ManagedThreadId, 0);
tt.Priority = ThreadPriority.Highest;
tt.Start(i);
}
लेकिन कभी कभी, अगर SubNNs.Count()
बड़ा हो जाता है (10-20), कार्यक्रम इस अपवाद फेंकता है: "। एक ही कुंजी पहले से ही जोड़ दिया गया है के साथ एक आइटम" लाइन threadStates.Add(tt.ManagedThreadId, 0);
मैं यह त्रुटि क्यों दे रहा हूं? ManagedThreadId
अद्वितीय नहीं है? यदि हां, तो मुझे क्या करना चाहिए?
और यदि नहीं, तो शायद एक धागा खत्म हो जाता है और दूसरा धागा उसी ManagedThreadId
से शुरू होता है? क्या यह संभव है? इस समस्या को कैसे रोकें?
या कोई और समस्या है?
संपादित करें: उपयोगकर्ताओं ने कहा कि प्रबंधित थ्रेड आईडी का पुन: उपयोग किया जा सकता है। इसलिए, चूंकि कोड के बाद के हिस्सों में, प्रत्येक धागे को खुद को एक अद्वितीय संख्या के साथ जानना आवश्यक है, क्या थ्रेड के नाम की तरह कुछ जोड़ने का कोई तरीका है कि प्रत्येक थ्रेड को इसकी अनूठी संख्या मिल सकती है?
किसी भी सलाह के लिए धन्यवाद!
हां, थ्रेड आईडी रीसाइक्लिंग हो जाते हैं। –