Поточная обработка по сравнению с параллельной обработкой

Microsoft.NET 4.0 представляет новые "параллельные улучшения" его платформе. Я задаюсь вопросом, что различие между подаванием заявки, которая использует стандартную Систему. Поточная обработка функций по сравнению с новыми параллельными улучшениями.

33
задан Icemanind 25 February 2010 в 04:33
поделиться

4 ответа

Вероятно, наиболее важным различием между параллельными расширениями и обычным потоком является поток управления.

Поток, созданный с использованием new Thread (...) или ThreadPool.QueueUserWorkItem , завершится в совершенно неопределенный момент времени. Если вы напишете этот код:

ThreadPool.QueueUserWorkItem(() =>
    {
        Thread.Sleep(1000);
        Console.WriteLine("Work Finished");
    });
Console.WriteLine("Item Queued");

Текст Item Queued появится сразу, а Work Finished будет напечатан с задержкой примерно в 1 секунду.

С другой стороны, если вы напишете что-то подобное с использованием параллельных расширений:

Parallel.For(0, 10, i =>
    {
        Thread.Sleep(1000);
        Console.WriteLine("Test {0}", i);
    });
Console.WriteLine("Finished");

В этом случае вы увидите задержку в 1 секунду перед тем, как что-то произойдет, а затем множество сообщений «Test» в случайном порядке , и затем текст Finished .

Другими словами, параллельное выполнение задач не влияет на ход выполнения программы. Он будет запускать разные задачи в разных потоках, чтобы их можно было выполнять на нескольких ядрах ЦП, чтобы улучшить общую пропускную способность программы, но, что касается типичного программиста, эти задачи на самом деле не выполняются в "фоновом режиме". "как если бы они были с ниткой. Вам не нужно изменять структуру вашей программы или делать что-то особенное, чтобы вас уведомили о завершении работы. У вас нет контроля над тем, что происходит внутри параллельного блока, но вы знаете, что блок не вернет управление, пока все параллельные задачи не будут завершены.

Хотя параллельные расширения отлично подходят для этого, стоит упомянуть, что PX вообще бесполезен, когда вам на самом деле нужно для выполнения задачи в фоновом режиме, например, реализации планировщика или делегирования рабочему потоку. чтобы пользовательский интерфейс оставался отзывчивым. Для этого вам по-прежнему нужно использовать потоки или асинхронные компоненты.

40
ответ дан 27 November 2019 в 18:34
поделиться

Вот хороший канал9, который я смотрел некоторое время назад по этой теме: http://channel9.msdn.com/posts/philpenn/Parallel-Programming-with-NET-Parallel-Extensions/

5
ответ дан 27 November 2019 в 18:34
поделиться

В параллельной структуре используется модель потоковой передачи .NET, которая, в свою очередь, основана на модели потоковой передачи Windows. Однако в общей структуре было сделано много оптимизации, чтобы сделать параллельную библиотеку более эффективной.

В этом блоге есть дополнительная информация.

1
ответ дан 27 November 2019 в 18:34
поделиться

Параллельная обработка - это просто необычный интерфейс для автоматического создания потоков. Для большинства задач проще использовать расширение параллельной обработки.

-4
ответ дан 27 November 2019 в 18:34
поделиться
Другие вопросы по тегам:

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