JavaRush
Акция
Университет
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема

Лекции

  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Мое обучение
  • Курсы
  • Университет
  • Карта квестов
  • Лекции
  • Поток выполнения и риски конкурентности

    C++ SELF
    68 уровень,0 лекция
    Разбираем, что меняется в программе, когда появляется второй поток: почему порядок событий становится недетерминированным, чем отличается race condition от data race, и почему UB — это не «редкий баг», а выход за правила языка. На примерах со std :: thread, join (), общими переменными и ++ counter учимся проектировать минимально безопасные контракты владения данными.
    Открыта
  • std::thread — запуск потока, аргументы, join

    C++ SELF
    68 уровень,1 лекция
    Разбираем базовую работу с потоками в C++: как запускать std::thread функцией и лямбдой, как передаются аргументы (копия, ссылка через std::ref/ std::cref, перемещение через std::move), что гарантирует join(), как пользоваться joinable(), почему забытый join() ведёт к std::terminate, и закрепляем всё мини-проектом TextStats.
    Открыта
  • Почему detach() опасен: lifetime и потерянные потоки

    C++ SELF
    68 уровень,2 лекция
    Разбираем, почему вызов detach() у std::thread часто превращает поток в «потерянный»: вы теряете точку завершения ( join()), получаете риски ошибок времени жизни ( lifetime) из-за захватов по ссылке ( [&]) и this, а также ухудшаете архитектуру и отладку. На практике смотрим на мини-проект TaskBook и сравниваем подходы: detached-копия против честного ожидания через join().
    Открыта
  • std::jthread и std::stop_token

    C++ SELF
    68 уровень,3 лекция
    Разбираем, зачем в C++20/23 появились std::jthread и std::stop_token: как jthread делает управление потоком «по умолчанию безопасным» через RAII, чем он отличается от std::thread, как устроена кооперативная остановка через request_stop() и stop_requested(), и почему «остановка» — это протокол, а не убийство потока. В конце — практический пример со спиннером и разбор типичных ошибок.
    Открыта
  • Общие данные: что считать общим ресурсом и

    C++ SELF
    68 уровень,4 лекция
    Разбираем, что в многопоточном C++ считать «общими данными»: не только переменные в памяти, но и ввод/вывод вроде std::cout, файлы, внешние сервисы и даже порядок событий. Учимся начинать синхронизацию с договора о владении, использовать границы обмена через join(), избегать совместного доступа с помощью snapshot-копий и thread confinement, а также почему для остановки лучше брать std::stop_token, а не «общий» bool.
    Открыта
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush