ГЛАВА 24. Многопоточное программирование. Часть вторая: библиотека TPL
Вероятно, самым главным среди новых средств, вне дренных в версию 4.0 среды .NET Framework, является библиотека распараллеливания задач (TPL). Эта биб лиотека усовершенствует многопоточное программирова ние двумя основными способами. Во-первых, она упрощает создание и применение многих потоков. И во-вторых, она позволяет автоматически использовать несколько процес соров. Иными словами, TPL открывает возможности для автоматического масштабирования приложений с целью эффективного использования ряда доступных процессо ров. Благодаря этим двух особенностям библиотеки TPL она рекомендуется в большинстве случаев к применению для организации многопоточной обработки. Еще одним средством параллельного программиро вания, внедренным в версию 4.0 среды .NET Framework, является параллельный язык интегрированных запросов (PLINQ). Язык PLINQ дает возможность составлять запро сы, для обработки которых автоматически используется несколько процессоров, а также принцип параллелизма, когда это уместно. Как станет ясно из дальнейшего, запро сить параллельную обработку запроса очень просто. Сле довательно, с помощью PLINQ можно без особого труда внедрить параллелизм в запрос. Главной причиной появления таких важных новшеств, как TPL и PLINQ, служит возросшее значение параллелиз ма в современном программировании. В настоящее время многоядерные процессоры уже стали обычным явлением. Кроме того, постоянно растет потребность в повышении производительности программ. Все это, в свою очередь, вызвало растущую потребность в механизме, который 24 позволял бы с выгодой использовать несколько процессов для повышения произво дительности программного обеспечения. Но дело в том, что в прошлом это было не так-то просто сделать ясным и допускающим масштабирование способом. Изменить это положение, собственно, и призваны TPL и PLINQ. Ведь они дают возможность лег че (и безопаснее) использовать системные ресурсы. Библиотека TPL определена в пространстве имен System.Threading.Tasks. Но для работы с ней обычно требуется также включать в программу класс System. Threading, поскольку он поддерживает синхронизацию и другие средства многопо точной обработки, в том числе и те, что входят в класс Interlocked. В этой главе рассматривается и TPL, и PLINQ. Следует, однако, иметь в виду, что и та и другая тема довольно обширны. Поэтому в этой главе даются самые основы и рассматриваются некоторые простейшие способы применения TPL и PLINQ. Таким образом, материал этой главы послужит вам в качестве удобной отправной точки для дальнейшего изучения TPL и PLINQ. Если параллельное программирование входит в сферу ваших интересов, то именно эти средства .NET Framework вам придется изучить более основательно. ПРИМЕЧАНИЕ Несмотря на то что применение TPL и PLINQ рекомендуется теперь для разработки боль шинства многопоточных приложений, организация многопоточной обработки на основе класса Thread, представленного в главе 23, по-прежнему находит широкое распростране ние. Кроме того, многое из того, что пояснялось в главе 23, применимо и к TPL. Поэтому усвоение материала главы 23 все еще необходимо для полного овладения особенностями организации многопоточной обработки на С#. Два подхода к параллельному программированию