gpt4 book ai didi

c++ - 从C++中的2个不同线程访问属于同一对象的不同数据成员

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:36 25 4
gpt4 key购买 nike

我有一些对象需要在 C++ 的不同线程上执行操作。我知道有必要锁定可能同时被多个线程使用的任何变量,但是如果每个线程都在访问(写入)同一对象的不同数据成员怎么办?例如,每个线程正在调用对象的不同方法,并且调用的所有方法都不会修改同一个数据成员。只要我不访问同一个数据成员就安全吗?还是我需要锁定整个对象?

我四处寻找关于这个主题的解释和细节,但每个例子似乎都集中在单个变量或非成员函数上。

总结一下:我可以从 2 个不同的线程安全地访问同一对象的 2 个不同的数据成员,而无需锁定整个对象吗?

最佳答案

它实际上是安全的,但如果您经常这样做,会大大降低代码的性能。计算机使用称为“高速缓存行”的东西,如果两个处理器在同一高速缓存行上工作,它们将不得不一直来回传递它,从而减慢您的工作速度。

关于c++ - 从C++中的2个不同线程访问属于同一对象的不同数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10334879/

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