0Pricing
C# Academy · Урок

Потоки и задачи

Изучите потоки и задачи для управления параллельной обработкой в C#

«Потоки и задачи» — бесплатный урок C# Academy на CoddyKit. Это урок 3 из 5. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 5 уроков всего.

Введение в многопоточность и задачи

Понимание многопоточности и задач

Добро пожаловать на следующий урок! На этом уроке Вы узнаете о потоках и задачах в C#, которые позволяют одновременно выполнять несколько операций для повышения производительности. Давайте начнём!

Потоки и задачи — иллюстрация 1

Что такое многопоточность

Что такое многопоточность?

Многопоточность — это процесс одновременного выполнения нескольких операций. Каждый поток представляет отдельный поток управления в приложении.

Важный момент: Многопоточность повышает производительность благодаря использованию нескольких ядер процессора для параллельного выполнения.

Создание и запуск потоков

Создание и запуск потоков

Вы можете создавать и запускать потоки с помощью класса Thread. Пример:

using System;
using System.Threading;

class Program {
    static void Main() {
        Thread thread = new Thread(PrintNumbers);
        thread.Start();

        Console.WriteLine("Main thread is running...");
    }

    static void PrintNumbers() {
        for (int i = 1; i <= 5; i++) {
            Console.WriteLine(i);
            Thread.Sleep(1000); // Pause for 1 second
        }
    }
}

Введение в задачи

Введение в задачи

Задачи обеспечивают абстракцию более высокого уровня для параллельного программирования по сравнению с потоками. Класс Task входит в библиотеку параллельных задач (TPL) в C#.

Пример: Создание и запуск задачи:

Совет: Задачами проще управлять, и они обеспечивают более эффективную обработку ошибок по сравнению с потоками.

using System;
using System.Threading.Tasks;

class Program {
    static void Main() {
        Task task = Task.Run(() => {
            for (int i = 1; i <= 5; i++) {
                Console.WriteLine(i);
                Task.Delay(1000).Wait();
            }
        });

        Console.WriteLine("Main thread is running...");
        task.Wait(); // Wait for the task to complete
    }
}

Использование параллельных циклов For и ForEach

Использование параллельных циклов For и ForEach

Класс Parallel в C# позволяет выполнять циклы параллельно для повышения производительности. Пример:

Важный момент: Используйте Parallel.For и Parallel.ForEach для задач с интенсивной обработкой данных, которые можно выполнять одновременно.

using System;
using System.Threading.Tasks;

class Program {
    static void Main() {
        Parallel.For(0, 5, i => {
            Console.WriteLine($"Processing {i} on thread {Task.CurrentId}");
        });

        Console.WriteLine("All tasks completed.");
    }
}

Обработка исключений в задачах

Обработка исключений в задачах

Вы можете перехватывать исключения в задачах с помощью блока try-catch или свойства Task.Exception. Пример:

using System;
using System.Threading.Tasks;

class Program {
    static void Main() {
        try {
            Task task = Task.Run(() => {
                throw new InvalidOperationException("Task failed!");
            });

            task.Wait();
        } catch (AggregateException ex) {
            Console.WriteLine("Error: " + ex.InnerException.Message);
        }
    }
}

Практическое задание

Практическое задание

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

using System;
using System.Threading.Tasks;

class Program {
    static void Main() {
        int[] numbers = { 1, 2, 3, 4, 5 };

        Parallel.ForEach(numbers, number => {
            Console.WriteLine($"Square of {number}: {number * number}");
        });
    }
}

Рекомендации по многопоточности и задачам

Рекомендации по многопоточности и задачам

Вот несколько рекомендаций:

  • Предпочитайте Task классу Thread для высокоуровневого параллелизма.
  • Используйте классы Parallel для операций с интенсивной обработкой данных.
  • Правильно обрабатывайте исключения, чтобы обеспечить надёжность приложений.
  • Ограничивайте количество потоков или задач, чтобы избежать конкуренции за ресурсы.

Совет: Используйте асинхронное программирование, когда преобладают операции ввода-вывода, а потоки или задачи — когда нагрузка приходится на CPU.

Отличная работа!

Отличная работа!

Поздравляю! Вы изучили основы многопоточности и задач для параллельного программирования на C#. На следующем уроке мы подробно рассмотрим делегаты и лямбда-выражения — две мощные возможности для функционального программирования. Продолжайте программировать!

Потоки и задачи — иллюстрация 10

Часто задаваемые вопросы

Урок «Потоки и задачи» бесплатный?

Да — полный текст урока «Потоки и задачи» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 5 уроков всего.

Чему я научусь в уроке «Потоки и задачи»?

Изучите потоки и задачи для управления параллельной обработкой в C# Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C# Academy?

Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 5.

Сколько времени занимает урок «Потоки и задачи»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C# Academy?

Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Обобщения в C#
  2. Async и Await: работа с асинхронным кодом
  3. Потоки и задачи
  4. Делегаты и лямбда-выражения
  5. Рефлексия в C#
← Назад к C# Academy