python - 關(guān)于單例的線程安全問(wèn)題
問(wè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)方式不是線程安全的。上面代碼中我自己寫(xiě)了測(cè)試代碼,但是發(fā)現(xiàn)id輸出都是一樣的。這個(gè)就證明不了非線程安全的?我的問(wèn)題是:如何寫(xiě)出可以證明這種實(shí)現(xiàn)不是線程安全的測(cè)試代碼?
問(wèn)題解答
回答1:本來(lái)單例模式就只能實(shí)例化1個(gè)對(duì)象,跟線程沒(méi)有任何關(guān)系。即使是線程安全的,它也返回相同的id。
相關(guān)文章:
1. python - oslo_config2. 關(guān)于mysql聯(lián)合查詢(xún)一對(duì)多的顯示結(jié)果問(wèn)題3. 實(shí)現(xiàn)bing搜索工具urlAPI提交4. MySQL主鍵沖突時(shí)的更新操作和替換操作在功能上有什么差別(如圖)5. 數(shù)據(jù)庫(kù) - Mysql的存儲(chǔ)過(guò)程真的是個(gè)坑!求助下面的存儲(chǔ)過(guò)程哪里錯(cuò)啦,實(shí)在是找不到哪里的問(wèn)題了。6. windows誤人子弟啊7. 冒昧問(wèn)一下,我這php代碼哪里出錯(cuò)了???8. 如何用筆記本上的apache做微信開(kāi)發(fā)的服務(wù)器9. 我在網(wǎng)址中輸入localhost/abc.php顯示的是not found是為什么呢?10. mysql優(yōu)化 - MySQL如何為配置表建立索引?
