Я только начинаю писать и использовать TPL в .NET 4.5 и задавался вопросом, можете ли вы мне помочь.Использование параллельной библиотеки задач
В принципе, моя программа WPF выполняет тяжелую работу над набором записей базы данных, которые могут находиться в диапазоне от 5 до 10 миллионов. Я хочу использовать библиотеку TPL для эффективного управления этой работой, сохраняя при этом пользовательский интерфейс.
Мой сценарий выглядит следующим образом. Я планировал использовать 3 отдельные задачи для извлечения данных, скажем, по 3 миллиона каждый, и передать их моему «работнику».
И я хочу отдельную задачу, которая берет каждый элемент из ВСЕХ элементов из вышеуказанных задач и выполняет некоторую работу с ним.
Итак, я хочу глобальный список элементов, в которые все 3 задачи могут вставлять элементы, моя четвертая задача должна затем выбирать элементы из этого главного списка по одному и выполнять некоторую работу с ним, он должен дождаться, если список пуст для его повторного заполнения и т. д.
Не могли бы вы дать некоторые рекомендации относительно того, как это сделать с помощью TPL? Я новичок с TPL. Некоторые примеры кода были бы хорошими.
Это звучит очень сложно. Как насчет цикла Parallel.ForEach, запускаемого по потоку результатов из базы данных? – usr
Это зависит от типа работы, которую вам нужно обрабатывать. Для CPU интенсивных вычислений Parallel.ForEach() может быть правильным выбором. Для привязки ввода-вывода (например, файлов и подключений к базе данных) операции, ожидающие использования методов async, будут более эффективными. – alexm