чем отличается boost::thread( ) от std::thread (с++17)? я спрашиваю не о способе реализации потоков в целом, а конкретно о этих функциях. Имеется - вопрос №3431801

код (не мой), который я использую в своем проекте, где создается поток с помощью бустов (в качестве аргумента передается ссылка на объект (или экземпляр, не знаю как правильно) класса

boost::thread Thread( boost::ref( *MyClassName ) );

данный поток создается в отдельной функции, которая завершается раньше чем поток успеет выполнится, и все работает как нужно (поток выполняется параллельно с выполнением последующего кода) но стоит мне использовать std::thread вместо boost std::thread

Thread( std::ref( *MyClassName ) );

то программа падает на выполнении функции, в которой кроме создания данного потока ничего не происходит. такое ощущение что память выделенная под этот поток как бы стирается при завершении этой функции, если я подожду завершения потока std::thread

Thread( std::ref( *MyClassName ) );

Thread.join( );

то все проходит гладко, но следующий код программы в основном цикле не начнет выполнятся, пока не завершится поток, что лишает смысла использования потока. вопрос в следующем: почему так происходит?

11.09.19
0 ответов
Ответов пока нет
Посмотреть всех экспертов из раздела Технологии > C/C++
7 ответов
27.05.12
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store