Про Task:
Данная библиотека позволяет распараллелить задачи и выполнять их сразу
на нескольких процессорах, если на целевом компьютере имеется
несколько ядер. Кроме того, упрощается сама работа по созданию новых
потоков. Поэтому начиная с .NET 4.0. рекомендуется использовать именно
TPL и ее классы для создания многопоточных приложений, хотя
стандартные средства и класс Thread по-прежнему находят широкое
применение.
Источник: ссылка
Изначально кол-во потоков в пуле потоков равно числу ядер процессора. Вопрос: каждый поток из потока пулов будет выполняться на "своем" ядре?
А как дела обстоят с обычными потоками - Thread (понимаю, что Task - более высокая абстракция Thread)? Новый Thread может выполняться как на ядре, где выполняется главный поток, так и на другом ядре, т.е. не гарантирует выполнение на новом ядре?
Ответ
В цитате явно смесь процессоров и ядер. Но распараллеливаются обычно по ядрам, а эти ядра могут принадлежать разным процессорам.
Изначально кол-во потоков в пуле потоков равно числу ядер процессора.
на усмотрение библиотеки.
Вопрос: каждый поток из потока пулов будет выполняться на "своем" ядре?
можно сделать так, что бы каждый поток исполнялся только на своем ядре (осознанно привязав их), но так обычно не делают - планировщик ОС обычно несколько умнее и будет их разбрасывать по ядрам по своему разумению.
А как дела обстоят с обычными потоками - Thread (понимаю, что Task - более высокая абстракция Thread)?
Да, Task - абстракция, которая прячет от программиста детали. Просто таска, это функция, которая выполняется внутри потока. Синхронизация, очереди и получения результата прячутся библиотекой.
Новый Thread может выполняться как на ядре, где выполняется главный поток, так и на новом?
Там, где будет удобнее ОС разместить его. Более того, поток может "гулять" по ядрам.
Комментариев нет:
Отправить комментарий