Нужно сделать такую программу. Консольная программа в бесконечном цикле ожидает ввода текстовых команд. При вводе команды нужно запустить вычисления в параллельном потоке (или процессе) и перейти в режим ожидания следующей команды. В процессе вычисления результат постепенно уточняется в зависимости от достигнутой глубины исследования. При истечении определенного времени или при вводе команды стоп нужно немедленно остановить вычисления и выдать результат.
Как это можно реализовать? Посоветуйте что можно почитать. Только самое простое, понятное, для чайников. Плохо понимаю, как поток создать, как остановить, как вернуть результаты, как разделить доступ к общим переменным.
Встречал такой пример
#include <thread>
void threadFunction()
{
// do smth
}
int main()
{
std::thread thr(threadFunction);
thr.join();
return 0;
}
И поясняется:
Вызов join блокирует вызывающий поток (в нашем случае — поток main) до тех пор, пока thr (а точнее threadFunction()) не выполнит свою работу. Если функция потока возвращает значение — оно будет проигнорировано.
join блокирует вызывающий поток -- к моему случаю такое не подходит. Как сделать действительно параллельно?