когда-то давно распараллеливал на С++ при помощи CreateThread — было просто чудо!
работа идеально делилась на количество потоков — ресурсоёмкости не добавлялась
на С# паралелил при помощи Parallel.For — какая-то жуть — накидывает 5% нагрузки в лучшем случае
а иногда так глючит что распараллеленый код выполняется за большее количество времени
что за хрень из-за чего?
пример кода
double[][] tmp = new double[no_channel][];
//for(int ic=0;ic<no_channel;ic++){
Parallel.For(0, no_channel, (Action<int>)((ic) =>
{
tmp[ic] = new double[no_point];
fs[ic].Next(ref tmp[ic], src);
}));
//}
Next — ресурсоёмкая функция с циклами
no_channel — от 8 до 16 (процессор 4х ядерный)
В чём косяк может быть?
Можно ли как нибудь передать ссылочную переменную?