Параллельные вычисления используются все больше и больше, а новые функциональные возможности и ярлыки облегчают использование (например, параллельные расширения, которые непосредственно доступны в .NET 4).
Теперь о параллелизме в сети?Я имею в виду абстракцию всего, что связано с коммуникациями, созданием процессов на удаленных машинах и т. Д. Что-то вроде C #:
NetworkParallel.ForEach(myEnumerable, () =>
{
// Computing and/or access to web ressource or local network database here
});
Я понимаю, что это сильно отличается от многоядерного параллелизма.Два наиболее очевидных различия, вероятно, будут следующими:
- Тот факт, что такая параллельная задача будет ограничена вычислениями, без возможности, например, использовать файлы, хранящиеся локально (но почему бы не база данных?), Илидаже использовать локальные переменные, потому что это будут скорее два разных приложения, чем два потока одного и того же приложения,
- Очень специфическая реализация, требующая не просто отдельного потока (что довольно просто), но охватывающего процессна разных машинах, а затем связываться с ними по локальной сети.
Несмотря на эти различия, такой параллелизм вполне возможен, даже не говоря о распределенной архитектуре.
Как вы думаете, будет ли этореализован через несколько лет?Согласны ли вы с тем, что он позволяет разработчикам легко и без особых усилий разрабатывать чрезвычайно мощные материалы?
Пример:
Подумайте о бизнес-приложении, которое извлекает данные из базы данных, преобразовывает их и отображает статистику.Допустим, этому приложению требуется десять секунд для загрузки данных, двадцать секунд для преобразования данных и десять секунд для построения диаграмм на одной машине в компании, используя весь ЦП, тогда как десять других машин большую часть времени используются на 5% ЦП.,В таком случае каждое действие может быть выполнено параллельно, в результате чего для общего процесса может потребоваться от шести до десяти секунд вместо сорока.