文章详情页
python - 关于单例的线程安全问题
问题描述
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。
相关文章:
1. macos - mac下docker如何设置代理2. boot2docker无法启动3. nignx - docker内nginx 80端口被占用4. docker不显示端口映射呢?5. docker网络端口映射,没有方便点的操作方法么?6. docker - 如何修改运行中容器的配置7. docker - 各位电脑上有多少个容器啊?容器一多,自己都搞混了,咋办呢?8. 在mac下出现了两个docker环境9. dockerfile - 我用docker build的时候出现下边问题 麻烦帮我看一下10. 在windows下安装docker Toolbox 启动Docker Quickstart Terminal 失败!
排行榜