python - 關於單例的線程安全問題
给我你的怀抱
给我你的怀抱 2017-05-18 10:45:22
0
1
622

class Singleton(object):
    __instance = None

    def __new__(cls, *args, **kwargs):
        if not cls.__instance:
           cls.__instance = super(Singleton, cls).__new__(cls, *args, **kwargs)

        return cls.__instance
    
if __name__ == '__main__':

    # 多线程中单例的使用
    from threading import Thread
    def func():
        print(id(Singleton()))

for index in range(10000):
    Thread(target=func).start()

上面試python中實作單例的一種方式,但是我們都知道這種實作方式不是線程安全的。上面程式碼我自己寫了測試程式碼,但發現id輸出都是一樣的。這就證明不了非線程安全的?我的問題是:如何寫出可以證明這種實作不是線程安全的測試程式碼?

给我你的怀抱
给我你的怀抱

全部回覆(1)
刘奇

本來單例模式就只能實例化1個物件,跟執行緒沒有任何關係。即使是線程安全的,它也返回相同的id。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!