Параллельное программирование: нити
-
Вычислить определенный интеграл от заданной функции,
разбив отрезок интегрирования на n частей и запустив
для каждой части отдельную нить.
Для синхронизации использовать мьютексы.
-
Та же задача, только для синхронизации использовать
семафоры.
-
Одна нить генерирует некоторую строку и передает ее второй
нити. Вторая нить как-то обрабатывает сгенерированную строку
и печатает обработанную строку.
Придумать механизм синхронизации нитей с помощью
семафоров и написать программу.
-
Перемножить две квадратные n*n-матрицы, запустив k*k нитей,
где k делит n. Нить с индексами (s,t) вычисляет минор
матрицы-произведения в строках s*m+1, ..., s*m+m и столбцах
t*m+1, ..., t*m+m, где m = n/k. (Результирующая матрица
разбивается на клетки размера m = n/k, каждая нить вычисляет
одну клетку.)
Для синхронизации использовать мьютексы.
-
Та же задача, только для синхронизации использовать
семафоры.
-
Разложить натуральное число на простые множители.
Программа должна раскладывать число на 2 множителя
одним из методов Полларда (Монте-Карло).
Для каждого множителя затем запускается отдельная нить,
пытающаяся его разложить дальше. Если это не удается, то
множитель считается простым.