#c# #parallel-processing
#c# #параллельная обработка
Вопрос:
например, я хотел бы видеть 1% ~ 100%, как я мог это сделать?
Parallel.For<Dictionary<int, long>>(0, r1, () => new Dictionary<int, long>(), (j, loop, tmpWinRange) =>
{
for (int k = 0; k < r2; k )
for (int l = 0; l < r3; l )
for (int m = 0; m < r4; m )
{
int pay = GetPay(j, k, l, m);
tmpWinRange[pay] ;
}
return tmpWinRange;
},
(x) => { tmpWinRangeCollection.Add(x); }
);
Комментарии:
1. Насколько велик
r1
? Достаточно ли изменять ход выполнения каждый раз, когда завершается самый внешний цикл (тот, сj
которым)?2. @svick r1, r2, r3, r4 находятся примерно в диапазоне 20 ~ 100
Ответ №1:
Как насчет использования взаимосвязанного приращения для обновления прогресса?
int progressCount = 0;
Parallel.For<Dictionary<int, long>>(0, r1, () => new Dictionary<int, long>(),
(j, loop, tmpWinRange) =>
{
for (int k = 0; k < r2; k )
for (int l = 0; l < r3; l )
for (int m = 0; m < r4; m )
{
int pay = GetPay(j, k, l, m);
tmpWinRange[pay] ;
}
Interlocked.Increment(ref progressCount);
return tmpWinRange;
},
(x) => { tmpWinRangeCollection.Add(x); }
);