gpt4 book ai didi

c# - 如何实现简单的多线程功能

转载 作者:行者123 更新时间:2023-11-30 21:20:37 25 4
gpt4 key购买 nike

我需要实现从多个线程调用的简单函数。该函数的逻辑很简单 - 想想赛马 - 只有第一匹马才能获得金牌,一旦我们有获胜者,比赛就结束了。

class ConditionalOrderGroup
{
private volatile bool _locked = false;
private List<ConditionalOrder> _ConditionalOrderList = null;

public bool LockGroup(ConditionalOrder initiator)
{
// this is finishline - we need to let only the first one proceed
if (_locked)
return false;
else
{
_locked = true;
}

// this is what winner gets
foreach (ConditionalOrder order in _ConditionalOrderList)
{

\\ cancel other orders
}

return true;
}
}

我不满意

if (_locked)
return false;
else
{
_locked = true;
}

如果两个订单可以通过if 检查并继续进行else 怎么办。如何重写这段代码不使用 lock 语句?

更新我的意思是我的目标是不使用任何阻塞方法,如 lock 语句。

最佳答案

您需要一个单独的私有(private)对象并使用 built-in locking :

private object padLock = new object();  // 1-to-1 with _ConditionalOrderList

if (Monitor.TryEnter(padLock))
{
try
{
// cancel other orders

return true;
}
finally
{
Monitor.Exit(padLock);
}
}
else
{
return false;
}

关于c# - 如何实现简单的多线程功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3178797/

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