У меня есть переменная (cnt
) внутри вложенной parallel.foreach
. Я запускаю эту программу и, по-видимому, хорошо работает. Кто-нибудь знает, что этот код действительно потокобезопасен? Можно ли определить переменную внутри петель parallel
?Локальная переменная внутри параллельных петель Безопасность резьбы
спасибо.
object obj = new object();
int total=0;
Parallel.For(0, 2, i =>
{
Parallel.For(0, 1000000, j =>
{
int cnt = 0;
if ((arr[i, j] % 2) == 0)
{
Interlocked.Increment(ref cnt);
}
lock (obj)
{
total= total+ (cnt/2);
}
});
});
10 colud, пожалуйста, скажите, как изменить его, чтобы стать эффективным – mohammad
@mohammad Done. –
Интересно, можете ли вы дать мне больше информации. К сожалению, я получаю эту ошибку Аргументы типа для метода 'System.Threading.Tasks.Parallel.For (int, int, System.Func , System.Func , System.Action ) 'не может быть выведено из использования. Попробуйте явно указать аргументы типа. –
mohammad