gpt4 book ai didi

c# - 锁定是否确保从缓存中清除读取和写入?如果是这样,如何?

转载 作者:太空狗 更新时间:2023-10-29 21:24:13 24 4
gpt4 key购买 nike

我正在阅读 this MSDN article on lockless thread syncing .该文章似乎推断只要您在访问共享变量之前输入锁定,那么这些变量就会是最新的(至少在 .Net 2.0 中)。

我开始思考这怎么可能? .Net 中的锁只是所有线程在访问内存之前检查的一些任意对象,但锁本身不知道正在访问的内存位置。

如果我有一个线程更新一个变量,甚至是整个内存块,那么在进入/退出锁时如何保证这些更新从 CPU 缓存中刷新?是否所有内存访问都有效地在锁内变为 volatile ?

最佳答案

查看 Eric Lippert 的工作:http://blogs.msdn.com/b/ericlippert/archive/2011/06/16/atomicity-volatility-and-immutability-are-different-part-three.aspx

Locks guarantee that memory read or modified inside the lock is observed to be consistent, locks guarantee that only one thread accesses a given hunk of memory at a time, and so on.

所以是的,只要您每次在访问共享资源之前都锁定,您就可以非常确定它是最新的

编辑 查看以下帖子以获取更多信息和非常有用的概述:http://igoro.com/archive/volatile-keyword-in-c-memory-model-explained/

关于c# - 锁定是否确保从缓存中清除读取和写入?如果是这样,如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7833462/

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