Как стать автором
Обновить

Многоядрёное программирование в .Net и нити.

Время на прочтение2 мин
Количество просмотров1.9K
Несколько дней назад написал пост про то, как количество нитей влияет на скорость вычислений. В комментариях, меня неоднократно обвинили в том, что при использовании нитей используется только одно ядро (или один процессор), а для просветленного многоядерного программирования надо использовать Parallel Extensions. Подобные утверждения меня, мягко сказать, удивили, потому решил разобраться более детально в вопросе.

Thread.
В русской версии MSDN«поток», что вносит некоторую неразбериху. Потому, я для обозначения Thread буду использовать термин «нить», который тоже является более-менее устоявшимся. Опять же, Лингво его трактует вполне однозначно: «4) компьют. нить, трэд (в мультизадачных средах: подпроцесс, запускаемый другим процессом в адресном пространстве этого (запускающего) процесса)».

Взаимосвязь между процессом и нитью.
Обратимся к MSDN и установим связь между нитями и процессами.
Процесс – это набор виртуального пространства памяти, кода, данных и системных ресурсов. Нить – это код, который последовательно выполняется внутри процесса. Процессор выполняет нити, не процессы, т.е. любое 32-битное приложение имеет как минимум один процесс, а процесс всегда имеет как минимум одну нить исполнения, известную как основную нить.

Опять же, обратимся к рекомендациям AMD аж 2006 года, чей процессор показал странные результаты. «Используйте различные объекты нитей доступные в .Net Framework, такие как: пространство имен System.Threading, Thread Class, …»

Ну и наконец, включаем логику и понимаем, что Parallel Extentions еще не релиз, проект был запущен в конце 2007, а многоядерные процессоры уже во всю ставились на рабочие места. Для чего создана PE – «Она создана для того, чтобы разработчики могли пользоваться современными многоядерными архитектурами, не утруждая себя трудоемким управлением потоками.»

Про Parallel Extensions есть хороший пост от 3fonov
Теги:
Хабы:
Всего голосов 52: ↑30 и ↓22+8
Комментарии84

Публикации

Истории

Работа

.NET разработчик
68 вакансий

Ближайшие события