class Engine():
_instance = None
_lock = threading.Lock()
def __new__(cls):
if cls._instance is None:
with cls._lock:
if cls._instance is None:
....
توی کد بالا بنظر شما چرا
if cls._instance دوبار استفاده شده ؟
اگر بلد نیستید اشکالی نداره (قراره یاد بگیرید)
قبل از دیدن راهنماییها با دقت بهش فکر کنید ببینید متوجه دلیلش میشید ؟
راهنمایی:
به حالت async اجرای این Singleton فکر کنید
اسم این پترن : double check locking هست
یک سری موارد رو چندوقت پیش توی مصاحبههام با شرکتهای بزرگ دیدم؛ الان دارم روی یک پروژه کار میکنم این مورد رو نیاز داشتم پیادهسازی کنم گفتم همینارو سوال جواب کنم برای یادگیری دوستان.