यह कोई अनुचित बात नहीं है। वहाँ रहे हैं मामलों में यदि वे केवल विधि कहा जाता है जहां तरीकों जो अन्य विधियों के संयोजन में धागे की सुरक्षा के मुद्दों पैदा कर सकता है सुरक्षित हैं।
हालाँकि, यह स्पष्ट रूप से इसका कोई मामला नहीं है, जब आप रिफ्लेक्टर में दिखाए गए कोड पर विचार करते हैं:
public void Add(T item)
{
if (this._size == this._items.Length)
{
this.EnsureCapacity(this._size + 1);
}
this._items[this._size++] = item;
this._version++;
}
भले ही EnsureCapacity अपने आप में थ्रेडसेफ़ था (और यह निश्चित रूप से नहीं है), तो उपरोक्त कोड स्पष्ट रूप से थ्रेडसेफ़ नहीं होने जा रहा है, इस बात को देखते हुए इंक्रीमेंट ऑपरेटर को गलत कॉल के कारण एक साथ कॉल की संभावना।
या तो ताला, समवर्ती रोल का उपयोग करें, या संभवत: एक लॉक-फ्री कतार का उपयोग करें, क्योंकि जिस जगह पर कई थ्रेड्स लिखते हैं, और वहां से पढ़ा जाता है - या तो सीधे या इसके साथ एक सूची भरकर - उसके बाद उन्होंने अपना काम किया है (मैं मान रहा हूं कि एक साथ कई लिखित एकल-थ्रेडेड रीडिंग के बाद आपका पैटर्न यहाँ है, आपके प्रश्न को देखते हुए, जैसा कि अन्यथा मैं यह नहीं देख सकता कि कैसे स्थिति जहां Addएकमात्र विधि किसी भी उपयोग की हो सकती है)।