C++. Многопоточное программирование – это легко и просто - Алексей Примак

C++. Многопоточное программирование – это легко и просто

Страниц

5

Год

2025

Книга рассматривает основы работы с потоками в C++. В ней описывается, как создавать потоки с помощью класса `std::thread` из стандартной библиотеки. Каждый объект типа `std::thread` представляет собой отдельный поток выполнения, что позволяет выполнять несколько задач одновременно. Приведены примеры использования этого класса для организации многопоточного программирования в C++.

Читать бесплатно онлайн C++. Многопоточное программирование – это легко и просто - Алексей Примак

Основы работы с потоками в C++

1. Создание потока

Потоки в C++ создаются с использованием класса std::thread из библиотеки . Каждый объект типа std::thread представляет отдельный поток выполнения.


Пример:

#include

#include

void threadFunction() {

std::cout << "Привет я поток" << std::endl;

}

int main() {

std::thread t(threadFunction); // Создаем поток

t.join(); // Ждём завершения потока

return 0;

}


Разбор:

std::thread t(threadFunction) создаёт новый поток, который выполняет функцию threadFunction.t.join() блокирует основной поток до тех пор, пока дочерний поток не завершится. Если не вызвать join() или detach(), программа завершится с ошибкой: std::terminate() будет вызван в деструкторе объекта std::thread.


1.2 Join vs Detach

В C++ потоки (threads) могут быть либо joinable (соединяемыми), либо detached (отсоединенными). Это два разных состояния управления жизненным циклом потока, и выбор между ними определяет, как основной поток будет взаимодействовать с дочерними потоками. Давайте разберем эти понятия подробно.


1.2.1 Joinable потоки


Когда вы создаете поток в C++, он по умолчанию является joinable. Это означает, что основной поток может "дождаться" завершения выполнения этого потока, вызвав метод join(). Этот метод блокирует основной поток до тех пор, пока дочерний поток не завершит свою работу.