我有一个并行的for循环和一个看起来像这样的列表:
var itemsList = new List<string> { "1","2","3","4","5","6","7","8","9","10","11" };
Parallel.For(0, 5000, ex=>
{
});
我想在这里做什么
因此基本上,在第一个随机并行运算项中,“ 1”值以下的值将存储在第一个变量中,如下所示:
var itemFromList = itemList.elementAt(0).Take(1);
在并行foreach / for循环的第二次迭代中:
var itemFromList = itemList.elementAt(1).Take(1);
一旦列表中的所有11个项目都用完了。。我想再次重复一次此过程。
如果最后一个存储在变量中,则再次输入:
var itemFromList = itemList.elementAt(10).Take(1); // Last item
然后再次使用列表中的第一项:
var itemFromList = itemList.elementAt(0).Take(1);
迭代无限期地重复。
有人可以帮我吗?
答案 0 :(得分:1)
这将在所有元素上执行相同的时间。
只要您只从列表中读取内容,它就应该是线程安全的。
但是“按时间顺序”与并行运行不兼容。
Parallel.For(0, 5000, ex=>
{
int myIndex = ex % itemsList.Count;
string myItem = itemsList[myIndex];
// use myItem
});