Как вызвать Parallel.For для функции от нескольких параметро
От: Passerby  
Дата: 26.12.19 22:17
Оценка:
Если функция от одного int, то можно вызвать Parallel.For. А как вызвать Parallel.For или Parallel.Foreach для функции от int и еще нескольких параметров? Желательно не на словах, а немного кода. Или в таком случае только создавать массив Task?
Отредактировано 26.12.2019 22:20 Passerby . Предыдущая версия .
Re: Как вызвать Parallel.For для функции от нескольких параметро
От: takTak  
Дата: 27.12.19 04:23
Оценка: 2 (1)
https://stackoverflow.com/questions/22264524/parallel-foreach-multiple-arguments-being-passed-to-method
Re[2]: Как вызвать Parallel.For для функции от нескольких параметро
От: Passerby  
Дата: 27.12.19 08:49
Оценка:
Здравствуйте, takTak, Вы писали:

T>https://stackoverflow.com/questions/22264524/parallel-foreach-multiple-arguments-being-passed-to-method


А как в этом примере то же сделать без лямбды. Т.е. как здесь делается Action<int> act из функции от int и еще одного параметра?
Re[3]: Как вызвать Parallel.For для функции от нескольких параметро
От: 0x7be СССР  
Дата: 27.12.19 09:00
Оценка: 2 (1)
Здравствуйте, Passerby, Вы писали:

P>Здравствуйте, takTak, Вы писали:

T>>https://stackoverflow.com/questions/22264524/parallel-foreach-multiple-arguments-being-passed-to-method
P>А как в этом примере то же сделать без лямбды. Т.е. как здесь делается Action<int> act из функции от int и еще одного параметра?
Можно ещё сделать объект, содержащий нужные параметры, и метод Do(int),который и присваивать Action<int>-у.
Но по сути ты руками будет делать замыкание, которое лямбда позволяет сделать одной строкой.
Re[4]: Как вызвать Parallel.For для функции от нескольких параметро
От: Passerby  
Дата: 27.12.19 09:24
Оценка:
Здравствуйте, 0x7be, Вы писали:

0>Здравствуйте, Passerby, Вы писали:


P>>Здравствуйте, takTak, Вы писали:

T>>>https://stackoverflow.com/questions/22264524/parallel-foreach-multiple-arguments-being-passed-to-method
P>>А как в этом примере то же сделать без лямбды. Т.е. как здесь делается Action<int> act из функции от int и еще одного параметра?
0>Можно ещё сделать объект, содержащий нужные параметры, и метод Do(int),который и присваивать Action<int>-у.
0>Но по сути ты руками будет делать замыкание, которое лямбда позволяет сделать одной строкой.
Т.е. схема примерно:
class C
        {           
            string str;
           public void Do(int j)
            { int k = j + str.IndexOf("a"); }
        }

// в программе
 C c = new C();
            Action<int> act = c.Do;

Но если лямбда, то там отложенные вычисления, т.е. еще что-то создается, влияющее на производительность?
Re[5]: Как вызвать Parallel.For для функции от нескольких параметро
От: 0x7be СССР  
Дата: 27.12.19 09:31
Оценка: 2 (1)
Здравствуйте, Passerby, Вы писали:

P>Т.е. схема примерно:

Да.

P>Но если лямбда, то там отложенные вычисления, т.е. еще что-то создается, влияющее на производительность?

Нет, лямбда не создаёт отложенных вычислений, она просто позволяет сконструировать функцию "по месту". Под капотом оно выглядит примерно так же, как ты описал руками. Можешь в .net-дизассемблере посмотреть, как оно реализовано.
Re[3]: Как вызвать Parallel.For для функции от нескольких параметро
От: takTak  
Дата: 27.12.19 13:27
Оценка: 1 (1)
T>>https://stackoverflow.com/questions/22264524/parallel-foreach-multiple-arguments-being-passed-to-method

P>А как в этом примере то же сделать без лямбды. Т.е. как здесь делается Action<int> act из функции от int и еще одного параметра?


а в чём проблема с лямбдой? в приведённом примере она через замыкание захватывает контекст с переменными, поэтому их потом и можно использовать
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.