Страницы

Поиск по вопросам

вторник, 11 июня 2019 г.

C# вопрос по потокам для изучения

Уважаемы гуру, есть вопрос. Хочу изучить потоки и не пойму с чего начать, а может что то и вообще не нужно для изучения или устарело.
Не вникая, быстро пробежался по поиску и наткнулся сначала на "Thread", затем увидел какой то "Task" , а ещё и на stackoverflow подкинули "async/await"
Может кто то направить на правильный путь для изучения потоков ?


Ответ

Потоки (в смысле "одновременно выполняющиеся куски кода") - это именно Threads.
Task - это чуть более высокий уровень абстрации. Это способ организовать работу в виде отдельных кусков (Task), которые могут, в том числе, представлять из себя одновременно выполняющиеся части кода. А могут представлять из себя что-то, что к выполнению кода вообще отношения не имеет - например, "задача чтения с диска", или "задача ожидания 10 секунд". Т.е. Task-и - это объединение идей параллельности (потоков) и асинхронности (каких-то долгих операций, о завершении которых приходит отдельное уведомление).
async / await это механизим языка, облегчающий работу с Task. Т.е. это способ красиво писать код с Task-ами (если не вдаваться в подробности).
Я бы посоветовал вам почитать про обычные потоки (Threads), хотя бы на уровне "как запустить", "как остановить", "как запустить кусок кода на потоке из Thread Pool". Потом почитать про таски, понять разницу между асинхронностью и многопоточностью, и начать писать код сразу с async / await

Комментариев нет:

Отправить комментарий