ryh*_*ang 6 php singleton multithreading synchronize double-checked-locking
我是PHP的新手,所以要开始我已经决定实现一个单例.
虽然我能够在php中重新创建单例模式,但我不确定如何实现双重检查锁定.
这在PHP中是否可行/需要.我在某处读过PHP不是多线程的?有人可以证实吗?
如果它是多线程的,有人可以向我解释一下lock()或synchronize()在PHP中是如何工作的吗?
谢谢,亨利
Alf*_*red 17
PHP有一个无共享架构:
- 与HTTP一样,每个请求都是不同的
- 共享数据被下推到数据存储层
- 避免前控制器
这给了我们:
- 能够负载平衡
- 从一个数据中心到另一个数据中心的不可见故障转移
- 更好的模块化应用程序
- 更容易开发和调试
但我不确定如何实现双重检查锁定.
通常,数据库层负责这一点.MySQL(innodb)标准具有例如行级锁定(这应该足够).
InnoDB在行级别上进行锁定,默认情况下以Oracle的方式运行查询作为非锁定一致性读取.
如果这还不够,SQL也有例如事务来实现这一点.
联机丛书将事务定义为"作为单个逻辑工作单元执行的操作序列"
就像幻灯片一样,PHP有一个Share-nothing-Architecture(传统),这也暗示了PHP没有线程(模型).尽管您可以编译(默认情况下未启用)PHP以支持可以相互通信的fork进程.当您还编译信号量函数时,您可以执行sem_acquire和sem_release之类的操作.但一般来说这不适用于PHP.
归档时间: |
|
查看次数: |
5865 次 |
最近记录: |