gpt4 book ai didi

c++ - 我需要在字段的构造函数中使用互斥量吗?

转载 作者:可可西里 更新时间:2023-11-01 17:41:58 26 4
gpt4 key购买 nike

假设我有一个简单的类 A,其中包含一个 C++ 字段。该字段在构造函数中初始化。 A 类还有一个名为 doit() 的方法,用于修改该字段的值。 doit() 将从多个线程调用。如果我只在 doit() 方法中有一个互斥量,这就足够了吗?我是否可以保证永远不会读取未初始化的字段(因为构造函数中没有锁)?

编辑:我可能不够清楚。没有涉及处理器缓存或类似问题的问题吗?我的意思是,如果没有用于初始化内存区域(即我的字段)的互斥量 - 是否没有其他线程读取一些垃圾值的风险?

最佳答案

你的对象只能被初始化一次,而且在它被初始化之前你将无法使用它,所以你在那里不需要互斥量。但是,您需要在 DoIt 函数中使用互斥锁或其他合适的锁,正如您所说,这将跨多个线程访问。

已编辑问题的更新:不,您无需担心处理器缓存。您必须先构造您的对象,然后才能拥有它的句柄。只有有了这个句柄,才能将它传递给其他线程使用。我想说的是,生成的线程必须在原始对象构造之后开始,不可能反过来发生!

关于c++ - 我需要在字段的构造函数中使用互斥量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12857182/

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