此代码仅在调试模式下才能正常工作。我不明白出了什么问题。
我试图修改代码,但没有任何进展。如果第一个参数为真,我想将调用函数 newRow 的结果添加到 hashSet。
foreach (structNumbers sn in numbers)
//Parallel.ForEach(numbers, new ParallelOptions { MaxDegreeOfParallelism = 1 }, (sn) =>
{
#region
//for (Int32 v = 0; v < 16; v++)
Parallel.For<Tuple<Boolean, mpz_t, mpz_t>>(0, 16,
()=> { return new Tuple<Boolean, mpz_t, mpz_t>(false, 0, 0); },
(v, pls, state) =>
{
#region
Interlocked.Increment(ref countChecked);
//if (newRow(i, j, v, t, index, sn.n, sn.m, out nMin, out mMin) == true)
//lock(thisLock)
Tuple<Boolean, mpz_t, mpz_t> res = newRow(i, j, v / 4, v % 4, index, sn.n, sn.m);
state = new Tuple<bool, mpz_t, mpz_t>(res.Item1, res.Item2, res.Item3);
return state;
#endregion
},
state => {
lock (thisLock)
{
if (state.Item1 == true)
{
#region
numbersTemp.Add(new structNumbers(state.Item2, state.Item3));
//numbersTemp.Add(new structNumbers(nMin, mMin));
//Console.WriteLine("bla");
#endregion
}
}
}
);
#endregion
}
//);