gpt4 book ai didi

c# - 线程与 FIFO 顺序同步

转载 作者:太空宇宙 更新时间:2023-11-03 21:20:14 25 4
gpt4 key购买 nike

我找到了这个辅助类:

public sealed class QueuedLock
{
private object innerLock;
private volatile int ticketsCount = 0;
private volatile int ticketToRide = 1;

public QueuedLock()
{
innerLock = new Object();
}

public void Enter()
{
int myTicket = Interlocked.Increment(ref ticketsCount);
Monitor.Enter(innerLock);
while (true)
{

if (myTicket == ticketToRide)
{
return;
}
else
{
Monitor.Wait(innerLock);
}
}
}

public void Exit()
{
Interlocked.Increment(ref ticketToRide);
Monitor.PulseAll(innerLock);
Monitor.Exit(innerLock);
}
}

这里:

Is there a synchronization class that guarantee FIFO order in C#?

它对我来说很好,但我刚刚阅读了一些关于使用这些可变变量的主题的评论,我不确定这里是否存在问题。我理解代码并在我的应用程序中实现它以完成正确的工作,但我承认我看不到这种方法在未来有负面影响,至少,如果有的话。

我还没有看到很多这样做的方法,所以最好有一个完整且安全的版本可以在任何情况下使用。

所以基本上,问题是,可以改进这种方法吗?它有任何细微的问题吗?

最佳答案

对于多线程FIFO(队列),.NET已经提供了ConcurrentQueue,我建议使用ConcurrentQueue,而不是使用低级锁。

MSDN:ConcurrentQueue

关于c# - 线程与 FIFO 顺序同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31309967/

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