पायथन में थ्रेडिंग मॉड्यूल दो प्रकार के ताले प्रदान करता है: एक आम लॉक और एक पुनर्विक्रय लॉक। मुझे ऐसा लगता है कि अगर मुझे लॉक की ज़रूरत है, तो मुझे हमेशा लॉक पर आरएलॉक पसंद करना चाहिए; मुख्य रूप से डेडलॉक स्थितियों को रोकने के लिए।क्या लॉक पर एक समझदार डिफ़ॉल्ट RLock है?
कि इसके अलावा, मैं दो अंक देखते हैं, जब एक ताला एक RLock से अधिक पसंद करते हैं:
- RLock एक और अधिक जटिल आंतरिक संरचना है और इसलिए खराब प्रदर्शन हो सकता है।
- किसी कारण से, मैं लॉक के माध्यम से एक थ्रेड को रिकर्स करना रोकना चाहता हूं।
क्या मेरा तर्क सही है? क्या आप अन्य पहलुओं को इंगित कर सकते हैं?
# 2 एक अच्छा कारण होने की संभावना नहीं है; एकमात्र मामला जहां यह गारंटीकृत डेडलॉक नहीं है, यदि रिकर्सन गैर-अवरुद्ध हो जाता है और इसमें कुछ उचित कार्यवाही होती है जब यह सत्यापित नहीं कर पाती है कि यह लॉक रखती है। और # 1 पायथन 3.2+ पर लागू नहीं होता है। 'लॉक' को प्राथमिकता देने का एक वैध कारण तब होता है जब लॉक को इसे प्राप्त करने वाले किसी भिन्न थ्रेड में रिलीज़ किया जाना चाहिए। – ShadowRanger