Действительно ли лямбда-выражения являются многопоточными?

Убедитесь, что вы правильно настроили политику трафика.
Вы создали набор записей для «www.21fighterpilots.com» , но вам также необходимо создать другой набор записей для «21fighterpilots.com» с требуемым значением , Это должно решить вашу проблему и иметь возможность просматривать «21fighterpilots.com» .

5
задан Joan Venge 17 March 2009 в 20:50
поделиться

7 ответов

Не 100%, ясных на том, что Вы спрашиваете.

Вы спрашиваете, выполняются ли лямбды естественно на другом потоке?

Раз так не они - просто другой экземпляр Системы. Делегат и работавший основной поток, если конкретно не спросили сделать иначе.

Вы спрашиваете, безопасны ли они работать на нескольких потоках?

Это - вопрос, на который можно только ответить путем знания содержания лямбда-выражения. Они не по сути ориентированы на многопотоковое исполнение. По моему опыту, гораздо менее вероятного, чтобы быть ориентированным на многопотоковое исполнение, чем Вы ожидал бы.

13
ответ дан 18 December 2019 в 05:40
поделиться

В следующей версии C# они добавляют опции многопоточности к LINQ (названный PLINQ) и делегаты. Проверьте больше информации здесь. В настоящее время это - все на единственном потоке.

3
ответ дан 18 December 2019 в 05:40
поделиться

Нет, они выполняются на потоке, они создаются на том, если Вы не передаете его другому потоку, точно так же, как никакой другой метод. Вы не хотели бы, чтобы они работали на другом потоке автоматически, доверяли мне.

6
ответ дан 18 December 2019 в 05:40
поделиться

Как другие сказали, лямбда-выражения не являются по сути многопоточными, ни делают стандарт linq к объектам дополнительные методы делает что-либо специальное для вызова их в отдельных потоках.

Однако, если Вы хотите сделать некоторое подобное linq многопоточное программирование, необходимо проверить Параллельные Расширения Платформы.NET. Также проверьте эту ссылку:
http://blogs.msdn.com/pfxteam/

К сожалению, это не будет RTM, пока VS2010/.Net4.0 не будет отсутствовать.

3
ответ дан 18 December 2019 в 05:40
поделиться

Хорошо лямбда является просто анонимным методом, она выполняется на любом потоке, к ней обращаются, если Вы не предоставляете код для выполнения на отдельном потоке.

2
ответ дан 18 December 2019 в 05:40
поделиться

Лямбда-выражения являются просто методами как любые другие. Что делает метод многопоточным?

  • Никакой доступ к внешним полям (простой метод ввода/вывода) - такой метод не является всегда многопоточным
  • Доступ к синхронизируемому полю - рассматривает сценарий синхронизации (Monitor класс, блокировка читателя/устройства записи, Interlocked доступ, WaitHandle, и т.д.), минимизируйте конкуренцию за блокировку.
  • Доступ к полученной переменной (закрытие) - удостоверяется, что полученная переменная не изменяется, пока другие потоки используют его (как к переменной получают доступ: просто чтения, чтения и записи...)

Компилятор C# достаточно умен для знания или статические методы, или методы экземпляра сгенерированы для лямбд.

2
ответ дан 18 December 2019 в 05:40
поделиться

Потенциально путая (но верный) ответ. В некоторых сценариях, с которыми обычно встречаются лямбда может выполниться на другой машине в совершенно другом виде среды выполнения, и поэтому на другом потоке, и вызывающая сторона не должна обязательно ожидать удаленного выполнения к полному, завершенному перед продолжением.

(А именно, если Вы передаете его Linq К SQL-запросу.)

2
ответ дан 18 December 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: