Task vs Thread: на каком ядре

244
10 ноября 2017, 07:04

Про Task:

Данная библиотека позволяет распараллелить задачи и выполнять их сразу на нескольких процессорах, если на целевом компьютере имеется несколько ядер. Кроме того, упрощается сама работа по созданию новых потоков. Поэтому начиная с .NET 4.0. рекомендуется использовать именно TPL и ее классы для создания многопоточных приложений, хотя стандартные средства и класс Thread по-прежнему находят широкое применение.

Источник: ссылка

Изначально кол-во потоков в пуле потоков равно числу ядер процессора. Вопрос: каждый поток из потока пулов будет выполняться на "своем" ядре?

А как дела обстоят с обычными потоками - Thread (понимаю, что Task - более высокая абстракция Thread)? Новый Thread может выполняться как на ядре, где выполняется главный поток, так и на другом ядре, т.е. не гарантирует выполнение на новом ядре?

Answer 1

В цитате явно смесь процессоров и ядер. Но распараллеливаются обычно по ядрам, а эти ядра могут принадлежать разным процессорам.

Изначально кол-во потоков в пуле потоков равно числу ядер процессора.

на усмотрение библиотеки.

Вопрос: каждый поток из потока пулов будет выполняться на "своем" ядре?

можно сделать так, что бы каждый поток исполнялся только на своем ядре (осознанно привязав их), но так обычно не делают - планировщик ОС обычно несколько умнее и будет их разбрасывать по ядрам по своему разумению.

А как дела обстоят с обычными потоками - Thread (понимаю, что Task - более высокая абстракция Thread)?

Да, Task - абстракция, которая прячет от программиста детали. Просто таска, это функция, которая выполняется внутри потока. Синхронизация, очереди и получения результата прячутся библиотекой.

Новый Thread может выполняться как на ядре, где выполняется главный поток, так и на новом?

Там, где будет удобнее ОС разместить его. Более того, поток может "гулять" по ядрам.

READ ALSO
C# OpenGL.Net и gluLookAt

C# OpenGL.Net и gluLookAt

Доброго времени суток! Есть ли в OpenGLNet gluLookAt или его аналог? Если нет, то как устанавливать и управлять камерой?

272
Как определить на какую кнопку нажал пользователь

Как определить на какую кнопку нажал пользователь

Итак, есть 5 кнопок на экране, нужно определить на какую кнопку нажал пользователь и взять её тег после чего редирект на другое активитиПытался...

350
TextBlock с подсветкой текста

TextBlock с подсветкой текста

Столкнулся с необходимостью выделения фрагмента текста в TextBlock, а именно определённых ключевых слов по которым были отфильтрованы элементы...

279
CancellationToken: почему структура?

CancellationToken: почему структура?

Почему CancellationToken реализован как структура? Ведь структура является типом значения, как тогда реализован данный механизм?

296