gpt4 book ai didi

c# - 防止线程不必要地执行 CoSTLy 任务

转载 作者:行者123 更新时间:2023-11-30 18:20:04 24 4
gpt4 key购买 nike

我想通过以下方式保护对资源的访问:

  • 所有线程都可以并发读取,更新期间除外(如果更新不是原子的)。
  • 只能给一个线程分配更新任务,直到下一次需要更新。

这似乎是一个使用适当的 lock 或可能使所有操作成为原子操作的简单问题,但我认为事实并非如此。

如果我只有一个用于更新的写锁(即 ReaderWriterLockSlim),或者使用非锁定代码,没有什么可以阻止多个线程运行更新过程(或排队等待这样做) ).如果我在检查资源是否需要更新之前使用锁定来阻塞线程,它们将无法并发执行,但会被有效地序列化。

我可以让特定的线程执行资源的所有检查和更新,并利用类似 ManualResetEvent 的东西来暂停其他读取线程,直到更新完成。 (或者如果更新是作为原子操作实现的,只需满足于具有特定的更新线程。)

但是,我不确定最佳实践,我想问一下您是否认为可以用更少的努力来满足这些要求,或者我的任何假设是否有偏差。

最佳答案

我认为您正在寻找 ReaderWriterLockSlim。使用独占锁模式写。

关于c# - 防止线程不必要地执行 CoSTLy 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37943872/

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