Кроссплатформенный - это библиотека pthreads, в том же MinGW присутствует из коробки, или std::thread из C++11, который во многом обёртка из классов над pthreads, так что не сильно суть.
Честно говоря, кроссплатформенность не особо нужна, просто не хочется возиться с низкоуровневым winapi. Пока мне удобнее всего использовать встроенный в студию 15 <thread>. Вот только я не нахожу там всех аналогов pthread. Например, pthread_cancel и pthread_testcancel.
Естественно сперва следует почитать учебник по ней и многопоточному программированию, все эти синхронизирующие примитивы, и т.п., в двух словах не расскажешь.
Уже читал и про мьютексы, и про условные переменные. Все равно затрудняюсь сообразить, как все устроить.
Цитата:
Поток0 запускает Поток1, выставив нужные синхронизирующие примитивы. Работа Потока1 организована таким образом, что он несколько раз в секунду "отвлекается" от основной работы и проверяет не выставил ли Поток0 ему приказ остановится досрочно
Наверное, нужно в общей памяти поставить флаг, который Поток1 будем периодически проверять, захватывая мьютекс? На частые обращения не расходуется много ресурсов?
Цитата:
а завершаясь выставляет Потоку0 информацию о том, что завершился и положил результаты куда надо.
Поток0 во время работы Потока1 ждет ввода текстовых команд на cin. Как он может на что-то реагировать?