gpt4 book ai didi

multithreading - 互斥锁如何知道要锁定哪些数据(以及不锁定哪些数据)?

转载 作者:行者123 更新时间:2023-12-04 17:10:01 24 4
gpt4 key购买 nike

我很好奇互斥锁如何知道要保护哪些数据以及不保护哪些数据。我一直在 Qt 中使用互斥体(互斥体?)和 QMutex没有指定要锁定的任何特定成员。

我想到的一个想法是,互斥锁不锁定任何资源,而是在资源上工作的例程,并且为了使该例程工作,必须解锁互斥锁。但这意味着如果我可以获得指向该资源的指针,我仍然可以在另一个不通过可锁定例程的线程中修改它,这意味着实际上不可能完全保护内存中的区域,它可以仅当它只能通过单个可锁定例程访问时才受到保护。那是对的吗?

最佳答案

是的你是对的。互斥锁保证代码一次只能被一个线程访问,而不是数据。

但是您可以通过封装来保护数据:将 protected 资源放在私有(private)字段中,并使 get/set 访问器使用互斥锁来协调访问。这种“包装”称为监视器 http://en.wikipedia.org/wiki/Monitor_(synchronization) .

关于multithreading - 互斥锁如何知道要锁定哪些数据(以及不锁定哪些数据)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20173569/

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