我在下面写了一些代码:
_concurentModels = new ConcurrentQueue<ScanOutletBarcodeModel>();
models.ToList().ForEach(m => _concurentModels.Enqueue(m));
Parallel.Invoke(ProcessInParalel);
private void ProcessInParalel()
{
Action[] actions;
if (_concurentModels.Count > 0)
{
actions = new Action[GlobalVariable.ProcessorCount];
for (int i = 0; i < GlobalVariable.ProcessorCount; i++)
{
actions[i] = (ThreadProcess);
}
Parallel.Invoke(actions);
}
Thread.Sleep(1000);
}
private void ThreadProcess()
{
while (_concurentModels.TryDequeue(out model))
{
//proceed model
}
}
当我设置GlobalVariable.ProcessorCount
= 16时,进程正在正常运行(所有处理的模型列表)但如果我增加处理器数量超过20,则某些模型记录似乎丢失且未处理。它在我的脑海里很奇怪,增加线程会让一些数据丢失吗?
我增加处理器数量的原因是性能问题。我的代码有什么问题吗?
感谢。