Звонок:
thread.join();
явно указывает вашей программе дождаться возврата функции, выполняемой thread
. Ваша функция никогда не возвращается, поэтому ваша программа никогда не проходит этот вызов функции. Вы можете запустить дополнительные потоки между созданием потока и соответствующим вызовом join()
. Например:
#include <thread>
void someFunction() { for(volatile int x = 0; ; x = x){};}
int main()
{
std::thread t1(someFunction);
std::thread t2(someFunction);
std::thread t3(someFunction);
t1.join();
t2.join();
t3.join();
return 0;
}
создаст 3 потока, которые абсолютно ничего не делают. Если функции, переданные потокам, возвращаются, это то, что вы хотите сделать.
Если вы хотите, чтобы задание было запущено и основная программа была завершена до этого, вам нужно будет запустить новый процесс в зависимости от платформы, чтобы их выполнение не было остановлено при выходе из программы.