Задание 26.
Разработать два приложения Snd и Rcv со следующей функциональностью. Первое приложение (Snd) должно пересылать второму приложению (Rcv) первый член, знаменатель и число членов геометрической прогрессии. Второе приложение (Rcv) должно вычислить последний член геометрической прогрессии, сумму всех ее членов и отобразить результат в своем окне. Для ввода данных разработать диалоговое с необходимыми элементами управления, которое должно открываться сразу же после запуска приложения Snd. В приложении Rcv после его запуска должно открываться обычное окно приложения. Связь между приложениями должна осуществляться на основе отправки и обработки сообщения WM_COPYDATA. После запуска приложения Snd, оно должно самостоятельно запустить приложение Rcv, если то еще не запущено. Для этого необходимо использовать функцию создания процесса. При завершении приложения Snd, оно должно автоматически закрыть процесс приложения Snd, если последнее еще не закрыто.
Задание 27.
Разработать многопоточное приложение со следующей функциональностью. Каждый из трех потоков приложения заполняет элементы массива цветов размера 100×100, соответственно, значениями красный, зеленый, желтый. Предварительно элементы массива должны быть заполнены белым цветом. Каждый элемент массива заполняется цветом лишь одним потоком и только один раз. После выполнения своей работы потоки сами себя завершают. Чтобы поработали все потоки, введите в код потоков временную задержку. После заполнения потоком цветом очередного элемента, в главный поток должно отправляться сообщение о необходимости перерисовать клиентскую область окна приложения. В клиентской области окна приложения главный поток должен рисовать матрицу прямоугольников размера 100×100, закрашенных соответствующим цветом. Синхронизацию рабочих потоков осуществить с помощью критической секции.
Задание 28.
Разработать многопоточное приложение со следующей функциональностью. Каждый из трех рабочих потоков приложения заполняет элементы массива цветов размера 100×100, соответственно, значениями синий, зеленый, желтый. Предварительно элементы массива должны быть заполнены белым цветом. Каждый элемент массива заполняется цветом лишь одним потоком и только один раз. После выполнения своей работы потоки сами себя завершают. Чтобы поработали все потоки, введите в код потоков временную задержку. После заполнения потоком цветом очередного элемента, в главный поток должно отправляться сообщение о необходимости перерисовать клиентскую область окна приложения. В клиентской области окна приложения главный поток должен рисовать матрицу прямоугольников размера 100×100, закрашенных соответствующим цветом. Синхронизацию рабочих потоков осуществить с помощью мьютекса.
Задание 29.
Разработать многопоточное приложение со следующей функциональностью. Каждый из четырех рабочих потоков увеличивает на единицу (от нуля) связанную с ним глобальную переменную и отображает ее значение в центре одной из четвертей клиентской области окна приложения (каждый поток – в своей четверти). Выполнить это действие поток может только, попав в «очередь» из двух потоков. Для создания этой «очереди» использовать семафор. Для лучшей иллюстрации работы потоков введите временную задержку в код каждого из потоков.
Задание 30.
Разработать многопоточное приложение со следующей функциональностью. Каждый из трех рабочих потоков приложения заполняет элементы массива цветов размера 100×100, соответственно, значениями синий, зеленый, красный. Предварительно элементы массива должны быть заполнены белым цветом. Каждый элемент массива заполняется цветом лишь одним потоком и только один раз. После выполнения своей работы потоки сами себя завершают. Чтобы поработали все потоки, введите в код потоков временную задержку. После заполнения потоком цветом очередного элемента, в главный поток должно отправляться сообщение о необходимости перерисовать клиентскую область окна приложения. В клиентской области окна приложения главный поток должен рисовать матрицу эллипсов размера 100×100, закрашенных соответствующим цветом. Синхронизацию рабочих потоков осуществить с помощью события с автоматическим сбросом.
