Как запустить и остановить параллельный поток?

Нужно сделать такую программу. Консольная программа в бесконечном цикле ожидает ввода текстовых команд. При вводе команды нужно запустить вычисления в параллельном потоке (или процессе) и перейти в режим ожидания следующей команды. В процессе вычисления результат постепенно уточняется в зависимости от достигнутой глубины исследования. При истечении определенного времени или при вводе команды стоп нужно немедленно остановить вычисления и выдать результат.

Как это можно реализовать? Посоветуйте что можно почитать. Только самое простое, понятное, для чайников. Плохо понимаю, как поток создать, как остановить, как вернуть результаты, как разделить доступ к общим переменным.

Встречал такой пример
#include <thread>
 
void threadFunction()
{
     // do smth
}
 
int main()
{
     std::thread thr(threadFunction);
     thr.join();
     return 0;
}

И поясняется:
Вызов join блокирует вызывающий поток (в нашем случае — поток main) до тех пор, пока thr (а точнее threadFunction()) не выполнит свою работу. Если функция потока возвращает значение — оно будет проигнорировано.

join блокирует вызывающий поток -- к моему случаю такое не подходит. Как сделать действительно параллельно?
  • Вопрос задан
  • 1299 просмотров
Пригласить эксперта
Ответы на вопрос 2
Smithson
@Smithson
20+ лет админю
shatalov.ghost17.ru/winapi/threads.html
С точки зрения C++ поток - это обычная функция имеющая определённый прототип. Для создания потока используется функция CreateThread.
Ответ написан
@Johanga
Нужно почитать про std::mutex.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы