Глупый ответ - это все, что требует много времени или повторяется. Я использую Microsoft .NET v4.0 Task Parallel Library, и одна из интересных особенностей их настройки - это «выраженный параллелизм». Интересный термин для описания «попытки параллелизма». Тем не менее, ваши операторы кодирования могут сказать «используйте TPL здесь», если на платформе хоста нет необходимых ядер, вместо этого она просто вызовет старомодный серийный код.
Я начал использовать TPL во всех моих проектах. В любом месте, где есть циклы, особенно (это требует, чтобы я спроектировал свои классы и методы так, чтобы между итерациями цикла не было зависимостей). Но любое место, которое могло бы быть просто старым добрым многопоточным кодом, я смотрю, чтобы увидеть, могу ли я разместить его сейчас на разных ядрах.
До сих пор моим любимым было приложение, которое загружает ~ 7800 различных URL-адресов для анализа содержимого страниц, и, если он находит информацию, которую ищет, выполняет некоторую дополнительную обработку .... это обычно занимало 26 - 29 минут до завершения. Моя рабочая станция Dell T7500 с двухъядерными процессорами Xeon 3GHz с 24 ГБ ОЗУ и 64-разрядной версией Windows 7 Ultimate теперь занимают все это примерно за 5 минут. Огромная разница для меня.
У меня также есть механизм связи публикации / подписки, который я реорганизовал для использования преимуществ TPL (особенно при передаче данных с сервера на клиенты). У вас может быть 10 000 клиентских компьютеров, которые заявили о своей заинтересованности в конкретных вещи, которые, как только это событие происходит, мне нужно отправить данные для всех из них). Я еще этого не сделал, но я ДЕЙСТВИТЕЛЬНО ЖДУ, чтобы увидеть результаты на этом.
Пища для размышлений ...