gpt4 book ai didi

c# - 使用锁是否比使用本地(单个应用程序)信号量具有更好的性能?

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

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

2年前关闭。




Improve this question




使用锁是否比使用本地(单个应用程序)信号量具有更好的性能?

我从 msdn 阅读了这个博客:Producer consumer solution on msdn

我不喜欢他们对问题的解决方案,因为队列中总是剩下 20 个元素。

因此,我考虑使用仅在我的应用程序中可用的“信号量”(我只是不会在构造函数中命名它),但我不知道它将如何影响应用程序的性能。

有没有人知道它是否会影响性能?使用锁而不是“信号量”的其他注意事项是什么?

最佳答案

Lock(obj) 与 Monitor.Enter(obj) 相同;锁基本上是一个一元信号量。如果您有多个相同资源 (N) 的实例,则使用初始化值为 N 的信号量。锁主要用于确保代码段不会同时被两个线程执行。

因此,可以使用初始化值为 1 的信号量来实现锁。我猜这里 Monitor.Enter 的性能更高,但我没有关于它的真实信息。在这里进行测试会有所帮助。这是一个 SO thread那是关于性能的。

对于您的问题,阻塞队列将是解决方案。 (生产者消费者)我建议this非常好的 SO 线程。

这是关于 Reusable Parallel Data Structures 的另一个很好的信息来源.

关于c# - 使用锁是否比使用本地(单个应用程序)信号量具有更好的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3489382/

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