python - 關(guān)于單例的線程安全問題
問題描述
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中實(shí)現(xiàn)單例的一種方式,但是我們都知道這種實(shí)現(xiàn)方式不是線程安全的。上面代碼中我自己寫了測(cè)試代碼,但是發(fā)現(xiàn)id輸出都是一樣的。這個(gè)就證明不了非線程安全的?我的問題是:如何寫出可以證明這種實(shí)現(xiàn)不是線程安全的測(cè)試代碼?
問題解答
回答1:本來單例模式就只能實(shí)例化1個(gè)對(duì)象,跟線程沒有任何關(guān)系。即使是線程安全的,它也返回相同的id。
相關(guān)文章:
1. python - oslo_config2. php傳對(duì)應(yīng)的id值為什么傳不了啊有木有大神會(huì)的看我下方截圖3. python - scrapy url去重4. 關(guān)于mysql聯(lián)合查詢一對(duì)多的顯示結(jié)果問題5. 實(shí)現(xiàn)bing搜索工具urlAPI提交6. 數(shù)據(jù)庫 - Mysql的存儲(chǔ)過程真的是個(gè)坑!求助下面的存儲(chǔ)過程哪里錯(cuò)啦,實(shí)在是找不到哪里的問題了。7. python - Django有哪些成功項(xiàng)目?8. 小白學(xué)python的問題 關(guān)于%d和%s的區(qū)別9. MySQL主鍵沖突時(shí)的更新操作和替換操作在功能上有什么差別(如圖)10. Python從URL中提取域名
