чем отличается boost::thread( ) от std::thread (с++17)?
я спрашиваю не о способе реализации потоков в целом, а конкретно о этих функциях.
Имеется - вопрос №3431801
код (не мой), который я использую в своем проекте, где создается поток с помощью бустов (в качестве аргумента передается ссылка на объект (или экземпляр, не знаю как правильно) класса
данный поток создается в отдельной функции, которая завершается раньше чем поток успеет выполнится, и все работает как нужно (поток выполняется параллельно с выполнением последующего кода) но стоит мне использовать std::thread вместо boost std::thread
Thread( std::ref( *MyClassName ) );
то программа падает на выполнении функции, в которой кроме создания данного потока ничего не происходит. такое ощущение что память выделенная под этот поток как бы стирается при завершении этой функции, если я подожду завершения потока std::thread
Thread( std::ref( *MyClassName ) );
Thread.join( );
то все проходит гладко, но следующий код программы в основном цикле не начнет выполнятся, пока не завершится поток, что лишает смысла использования потока. вопрос в следующем: почему так происходит?