gpt4 book ai didi

c++ - 如果没有另外说明,是否可以假定 get 方法是线程安全的?

转载 作者:太空狗 更新时间:2023-10-29 19:53:42 26 4
gpt4 key购买 nike

如果方法文档中没有另外说明,是否可以普遍假定 get 方法的线程安全性?还是反过来说,如果没有特别说明,永远不应该假定线程安全?你怎么看?

编辑:

上课

class InfoClass {
public:
void Init();
int GetInfo();
void Free();
};

调用 Init() 一次,从线程上下文调用 GetInfo(),并在线程操作结束后调用 Free()

最佳答案

线程安全总是需要额外的工作,所以你唯一可以安全地假设是相反的 - 在没有直接支持的情况下,线程安全不是支持。

解释:

假设您有一个用于简单 64 位 long longgetter,并且正在 32 位架构上运行。当计算机正在获取该 64 位长值的后半部分(刚刚完成前半部分)时,另一个线程更新后半部分,现在您所拥有的是不一致的 - 因此它不是线程安全的。

编辑(以匹配问题中的编辑):

(旁注 - 您介绍类(class)的方式使其无法使用,因为所有成员都是私有(private)的)

如果您没有任何访问方法来改变您的类在构建后的状态,那么您可以假定线程安全。但这仍然是一个草率的斜坡,因为后来有人不知道你的假设可能会在类中添加一个 setter 并在随机错误调试体验中有一个美妙的旅程;)

关于c++ - 如果没有另外说明,是否可以假定 get 方法是线程安全的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11647896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com