Параллельно. Для ВС. Для. Почему есть эта разница? - PullRequest
0 голосов
/ 10 января 2012

У меня есть массив (i), и я хочу выполнить некоторые математические вычисления на основе значения i с Parallel.For().

Но проблема в том, что после запуска Parallel.For() значенияв моем массиве все еще 0.

Это происходит, когда мой for равен от 0 до 0.

Это мой код:

    Dim a(10) As Double
    Parallel.For(0, 0, Sub(i)
                           a(i) = i + 2
                           'There is some calculations based on instead of previous line!
                           'But anyway, the result will be on a(i).
                       End Sub)

    MessageBox.Show(a(0)) 'This returns 0!


    For i As Integer = 0 To 0
        a(i) = i + 2
    Next
    MessageBox.Show(a(0)) 'But this returns 2!

В чем проблема?

Ответы [ 2 ]

4 голосов
/ 10 января 2012

С Документация Microsoft

Если значение fromInclusive больше или равно toExclusive, метод немедленно возвращается без выполнения каких-либо итераций.

Поэтому при использовании Parallel.For(0,0,etc).

ничего не произойдет.

Попробуйте Parallel.For(0,1) и посмотрите, получите ли вы результат.

1 голос
/ 17 августа 2012

Ваш правильный код должен выглядеть следующим образом

   Dim a(10) As Double
    Parallel.For(0, 1, Sub(i)
                           a(i) = i + 2
                           'There is some calculations based on instead of previous line!
                           'But anyway, the result will be on a(i).
                       End Sub)

    MessageBox.Show(a(0)) '2!


    For i As Integer = 0 To 0
        a(i) = i + 2
    Next
    MessageBox.Show(a(0)) '2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...