【发布时间】:2010-01-31 15:22:24
【问题描述】:
我需要实现一个生产者/消费者有界队列,多个消费者针对一个生产者。
我有一个推送函数,可以将一个项目添加到队列中,然后检查 maxsize。如果我们达到它返回 false,在其他情况下返回 true。
在下面的代码中_vector是一个List
您是否发现此代码存在问题?
public bool Push(T message)
{
bool canEnqueue = true;
lock (_vector)
{
_vector.Add(message);
if (_vector.Count >= _maxSize)
{
canEnqueue = false;
}
}
var onSignal = SignalEvent;
if (onSignal != null)
{
onSignal();
}
return canEnqueue;
}
【问题讨论】:
标签: c# multithreading queue retlang