Написать программу на C++ 11 (или C++ 14) которая выполняет избыточные вычисления используя несколько потоков:
Потоки А-1..А-M генерируют блоки случайных данных. Количество потоков, блоков и размер блока задается параметрами командной строки. Количество блоков может быть очень большим.
Потоки Б-1..Б-N вычисляют CRC32 (можно использовать готовую реализацию). Количество потоков задается параметром командной строки.
Когда все потоки Б вычислят CRC32 для какого-то блока, надо сравнить полученные значения и если они не совпадают записать блок в файл и вывести сообщение в std::cout.
Потоки A и Б должны работать параллельно.
//------------------------------
я правильно понял? - создается А поток, который генерирует X блоков размером S.
[OE]. Создается несколько потоков А (всего M штук, M задается параметром командной строки). Блок генерируется одним потоком, разные блоки могут быть сгенерированы разными потоками A.
После генерации каждого блока создается N потоков B, который считают CRC для только что созданного блока потом А,т.е. потоки Б-1..Б-N создаются для каждого блока или их кол-во фиксировано для всего процесса?
[OE]. Нет необходимости делать последовательно генерацию блоков и их обсчёт. Потоки Б и А работают одновременно (одни генерируют, другие в это время обсчитывают уже сгенерированные блоки).
запуск:
app -a5 -b5 -c10 -s20 -a5 кол-во потовов А -b5 кол-во потовов В -c10 кол-во блоков -s20 размер блока в байтах