gpt4 book ai didi

c# - 锁定变量时,我必须在所有地方都锁定它吗?

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

我想知道当从多个线程访问一个变量时,我是否必须为每次访问锁定它?例如,我有一个列表变量,并且希望在从中删除项目时无法访问该列表。即使在仅访问数据的线程中我也必须将其锁定,或者将其锁定在“删除项目”线程中就足够了。我担心的是,如果一个线程访问列表在进程中间停止,转到另一个从列表中删除并锁定变量的线程,则会出现错误。

最佳答案

您的浴室门没有锁。取而代之的是,它有一个双面标志,一面写着“有人居住”,另一面写着“无人居住”。当有人接近浴室时,如果它被标记为有人,他们会一直等到它被标记为无人为止。如果它被标记为空闲,他们将标志设置为占用并进入。当他们离开时,他们将标志设置回空闲。

(还必须存在一些协商机制来处理有两个或更多人等待的情况 - 谁先进来?而且,当两个人同时接近一个无人使用的浴室时会发生什么 - 谁赢了?但是我们将忽略那些皱纹;它们与类比无关。)

这个方案工作得很好。你的问题是“如果有人忽略了标志,或者忘记改变它,我是否会遇到同时有两个人在浴室里的情况?”

是的,显然你可以。如果你不相信我,那么我鼓励你找个时间在你的浴室里试一试,看看当有人无视协议(protocol)时会发生什么。资源访问协议(protocol)仅在每个人 都遵守该协议(protocol)的情况下才保护对该资源的访问!

关于c# - 锁定变量时,我必须在所有地方都锁定它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4142444/

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