C++ 没用 atomic 安全吗
按内存模型,C++ 共享写没用 atomic,safe("cpp", False) 交回什么?
内存模型对比:bytecode_atomic(语言)——CPython 单条字节码在 GIL 下不可分;needs_atomic_type=C++ 才要显式 atomic;guaranteed_ordering、safe(语言, 用没用 atomic)。
def bytecode_atomic(lang):
"""CPython 单条字节码在 GIL 下不可分;C++ 普通读写不保证。"""
return lang == "python"
def needs_atomic_type(lang):
"""C++ 跨线程共享要显式 atomic / 加锁;Python 简单操作靠 GIL 兜。"""
return lang == "cpp"
def guaranteed_ordering(lang, used_atomic):
"""有序性保证:Python 有 GIL 兜底;C++ 要用了 atomic / 内存序才有。"""
return True if lang == "python" else used_atomic
def safe(lang, used_atomic):
"""这段共享访问安全吗:Python 字节码原子、或 C++ 用了 atomic。"""
return bytecode_atomic(lang) or used_atomic
print(safe("cpp", False))
全部评论