Разница между std::thread и std::jthread в C++ заключается в следующем:
- std::thread создаёт поток выполнения, для ожидания завершения которого нужно явно вызвать метод join(). habr.com www.devgem.io Вызов метода detach() позволяет потоку выполняться в фоновом режиме. habr.com
- std::jthread — это управляемый поток, который автоматически завершает свою работу при выходе из области видимости, если он был запущен. t.me Это позволяет избежать необходимости явного вызова join() или detach() для завершения потока, что упрощает управление ресурсами. t.me Кроме того, если поток, созданный с помощью std::jthread, был запущен и бросает исключение, прежде чем завершиться, то исключение будет перехвачено и обработано, прежде чем поток завершится. t.me
Ещё одна разница заключается в том, что в отличие от std::thread, std::jthread содержит внутренний закрытый член типа std::stopsource, который хранит stop-state. habr.com Конструктор jthread принимает функцию, которая принимает std::stoptoken в качестве своего первого аргумента. habr.com Этот аргумент передаётся в функцию из stop_source и позволяет функции проверить, была ли запрошена остановка во время её выполнения, и завершиться при необходимости. habr.com