Bri*_*uez 13 python multithreading language-lawyer
在双重检查锁定习语是不是在某些语言可靠,我想知道的Python是否是其中之一。更具体地说,是以下代码...
# Objects shared by threads:
obj = None
lock_for_obj = threading.Lock()
def get_obj():
"""Function called concurrently by threads."""
if obj is None:
with lock_for_obj:
if obj is None:
obj = factory() # Never returns `None`
return obj
Run Code Online (Sandbox Code Playgroud)
... Python中的线程安全?有没有的场景/实现?为什么?
查看PEP 583 - Python 的并发内存模型,该模型已被撤回。
我猜它被撤回的原因(尽管我找不到足够的信息)是因为Python 有不同的实现,并且很难在每个实现上强制执行这样的标准。
结论:在单处理器上使用 CPython 实现时,此代码可能是安全的,或者通常使用 Jython 实现来使用它可能是安全的,但不能保证。
| 归档时间: |
|
| 查看次数: |
405 次 |
| 最近记录: |