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. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.2. docker-compose中volumes的問(wèn)題3. java - SSH框架中寫(xiě)分頁(yè)時(shí)service層中不能注入分頁(yè)類(lèi)4. boot2docker無(wú)法啟動(dòng)5. nignx - docker內(nèi)nginx 80端口被占用6. javascript - mock.js可以存儲(chǔ)數(shù)據(jù)嗎7. javascript - vue生成一維碼?求助!!!!!急8. docker網(wǎng)絡(luò)端口映射,沒(méi)有方便點(diǎn)的操作方法么?9. 求救一下,用新版的phpstudy,數(shù)據(jù)庫(kù)過(guò)段時(shí)間會(huì)消失是什么情況?10. javascript - js如何獲取app保存的TOKEN?

網(wǎng)公網(wǎng)安備