(системное и прикладное программное обеспечение).

advertisement
МНОГОПОТОЧНОСТЬ В WINDOWS-95
Методические указания лабораторного практикума на ЭВМ
по курсу Системное и прикладное программное обеспечение (4 семестр)
(составитель доц. Рублев В.С.)
1
I. Общее задание
Разработать программу под Windows-95, которая осуществляет многопоточный режим работы, создает 4 дочерних окна с выполнением в них следующих действий:
1. Окно отображения данных с кнопкой Параметры, в котором при нажатии кнопки происходит
запрос параметров данных в диалоговом окне, генерация данных и их вывод в окно для просмотра (скроллинг). Первый параметр определяет размерность массива данных, и при размерности по умолчанию 1 все данные единственного элемента массива задаются через параметры,
а при большей размерности генерируются при помощи датчика псевдослучайных чисел rand().
2. Окно вывода графики, определяемой данными и индивидуальным заданием. (Замечания: данные – целые неотрицательные числа; координаты точек определяются как остатки от деления на соответствующие размеры окна графики; компоненты цвета определяются как
остатки от деления на 256).
3. Окно вычислений, определяемых данными и индивидуальным заданием, выводом результатов
вычислений (выполнение асинхронно с выводом в окно графики).
4. Окно вычисления с индикатором прогресса и вывода текущей характеристики графики (выполнение синхронно с выводом графики).
Отчет по проделанной работе должен содержать:
1) общее и индивидуальное задание;
2) программу;
3) полный набор тестов, содержащий как общий случай, так и крайние.
II. Варианты индивидуальных заданий
1. Параметры – координаты точки на плоскости, компоненты rgb-цвета.
Графика – ломанная с началом в начале координат, звенья которой заданного цвета проходят
через точки массива.
Вычисления – длина ломанной.
Характеристика графики – текущая длина построенной ломанной.
2. Параметры – координаты 3 точек на плоскости, компоненты rgb-цвета.
Графика – треугольники, каждый из которых имеет вершины в точках элемента массива и
окрашивается в заданный элементом цвет.
Вычисления – сумма площадей треугольников.
Характеристика графики – текущая сумма площадей треугольников.
3. Параметры – координаты 2 точек на плоскости, компоненты rgb-цвета.
Графика – прямоугольники, 2 вершины которых заданы 2 точками, а стороны параллельны
осям координат, окрашенные в заданные цвета.
Вычисления – сумма отношений сторон прямоугольников.
Характеристика графики – текущая сумма отношений сторон прямоугольников.
4. Параметры – координаты 2 точек на плоскости, компоненты rgb-цвета.
Графика – круги, каждый из которых имеет центр в 1-й точке, радиус до 2-й точки, и окрашенные в заданные цвета.
Вычисления – сумма площадей кругов.
Характеристика графики – текущая сумма площадей кругов.
5. Параметры – координаты 5 точек на плоскости, компоненты rgb-цвета.
Графика – многоугольники, каждый из которых имеет вершины в заданных точках и окрашен
в заданный цвет в режиме ALTERNATE.
Вычисления – сумма периметров многоугольников.
Характеристика графики – текущая сумма периметров многоугольников.
2
6. Параметры – координаты точки на плоскости, компоненты rgb-цвета.
Графика – разбиение на прямоугольники (начальное разбиение определяется делением окна на
4 части и окраской в чистые цвета красный, зеленый, голубой и черный), при котором для каждой следующей точки определяется прямоугольник, которому он принадлежит и он разбивается на 4 прямоугольника; цвета новых прямоугольников
определяются как красный, зеленый, голубой и черный.
Вычисления – число треугольников разбиения.
Характеристика графики – текущая число треугольников разбиения.
7. Параметры – координаты 2 точек на плоскости, компоненты rgb-цвета.
Графика – эллипсы, каждый из которых окрашен в заданный цвет и вписан в прямоугольник,
определяемый 2-мя точками.
Вычисления – число эллипсов, у которых горизонтальный диаметр больше вертикального.
Характеристика графики – текущее число эллипсов, у которых горизонтальный диаметр
больше вертикального.
8. Параметры – координаты 4 точек на плоскости, компоненты rgb-цвета.
Графика – многоугольники, каждый из которых имеет вершины в заданных точках и окрашен
в заданный цвет в режиме WINDING.
Вычисления – сумма площадей многоугольников.
Характеристика графики – текущая сумма площадей многоугольников.
9. Параметры – координаты 4 точек на плоскости, компоненты rgb-цвета.
Графика – сектора кругов, каждый из которых имеет центр в 1-й точке, радиус до 2-й точки,
ограничен лучами из центра до 3-й и 4-й точки и окрашен в заданный цвет.
Вычисления – сумма площадей секторов кругов.
Характеристика графики – текущая сумма площадей секторов кругов.
10. Параметры – координаты 5 точек на плоскости, компоненты rgb-цвета.
Графика – прямоугольники, каждый из которых имеет стороны, параллельные осям координат, содержит заданные точки, имеет минимальную площадь и окрашен в заданный цвет.
Вычисления – максимальная площадь прямоугольника и его номер.
Характеристика графики – текущие максимальная площадь прямоугольника и его номер.
11. Параметры – координаты 4 точек на плоскости, компоненты rgb-цвета.
Графика – прямоугольники со скругленными углами, 2 вершины каждого из которых заданы
первыми 2-мя точками, стороны параллельны осям координат, а углы сглажены
эллипсами, заданными вторыми 2-мя точками, и который окрашен в заданный цвет.
Вычисления – максимум отношений сторон прямоугольников.
Характеристика графики – текущий максимум отношений сторон прямоугольников.
12. Параметры – координаты 4 точек на плоскости, компоненты rgb-цвета.
Графика – сегменты эллипсов, каждый из которых определяется 4-мя точками (первые 2 точки
определяют эллипс, а вторые 2 точки определяют лучи из центра эллипса, ограничивающие сегмент) и окрашен в заданный цвет.
Вычисления – сумма углов сегментов.
Характеристика графики – текущая сумма углов сегментов.
13. Параметры – координаты точки на плоскости, компоненты rgb-цвета.
Графика – кривая, проведенная через точки массива и сглаженная сплайном Безье (дополнительные точки сплайна для каждой точки Xi определяются как 1/2(Xi+1 - Xi-1), а
цвет каждого звена кривой определяется заданным цветом).
Вычисления – число точек самопересечения кривой.
Характеристика графики – текущее число точек самопересечения кривой.
3
14. Параметры – координаты 4 точек на плоскости, компоненты rgb-цвета.
Графика – сектора кругов, каждый из которых определяется 4-мя точками (первые 2 точки
определяют центр и радиус, а вторые 2 точки определяют лучи из центра круга,
ограничивающие сектор) и окрашен в заданный цвет.
Вычисления – максимальный угол и номер сектора.
Характеристика графики – текущие максимальный угол и номер сектора.
15. Параметры – координаты точки на плоскости, компоненты rgb-цвета.
Графика – спираль, у которой каждое звено имеет заданный цвет, начало в конце предыдущего звена (1-я в центре окна) и конец, определяемый приращением угла в радианах и
приращением длины соответствующим координатами точки (по модулю 100); звенья рисуются не отрезками, а сплайнами Безье (дополнительные точки сплайна
для каждой точки Xi определяются как 1/2(Xi+1 - Xi-1)).
Вычисления – число витков спирали.
Характеристика графики – текущее число витков спирали.
16. Параметры – координаты точки на плоскости, компоненты rgb-цвета.
Графика – ломанная, у которой каждое звено имеет начало в конце предыдущего звена (1-я в
центре окна), угол в радианах и длину, определяемые координатами точки, и заданный цвет.
Вычисления – длина ломанной.
Характеристика графики – текущая длина построенной ломанной.
17. Параметры – координаты точки на плоскости, компоненты rgb-цвета.
Графика – квадраты с центром в центре окна, для каждого из которых точкой задана одна из
вершин и который окрашен в заданный цвет, но прозрачен для находящихся под
ним квадратов.
Вычисления – площадь объединения квадратов.
Характеристика графики – текущая площадь объединения квадратов.
18. Параметры – координаты точки на плоскости, компоненты rgb-цвета.
Графика – круги с центром в предыдущей точке и радиусом до следующей точки, каждый из
которых окрашен в заданный цвет.
Вычисления – максимальная площадь круга и его номер.
Характеристика графики – текущая максимальная площадь круга и его номер.
19. Параметры – координаты точки на плоскости, компоненты rgb-цвета.
Графика – прямоугольники, каждый из которых имеет центр в предыдущей точке, ширину и
высоту, определяющиеся следующей точкой, и окрашен в заданный цвет.
Вычисления – максимальная площадь прямоугольника и его номер.
Характеристика графики – текущая максимальная площадь прямоугольника и его номер.
20. Параметры – координаты точки на плоскости, компоненты rgb-цвета.
Графика – эллипсы, каждый из которых имеет центр в предыдущей точке, ширину и высоту,
определяющиеся следующей точкой, и окрашен в заданный цвет.
Вычисления – сумма длины границ эллипсов.
Характеристика графики – текущая сумма длины границ эллипсов.
21. Параметры – координаты 3 точек на плоскости, компоненты rgb-цвета.
Графика – треугольники, каждый из которых задан вершиной (1-я точка) и двумя сторонами
(тангенс угла направления и длина определяются соответственно координатами 2-й
или 3-й точки) и окрашивается в заданный элементом цвет.
Вычисления – сумма площадей треугольников.
Характеристика графики – текущая сумма площадей треугольников.
4
22. Параметры – координаты точки на плоскости, компоненты rgb-цвета.
Графика – спираль, у которой каждое звено имеет заданный цвет, начало в конце предыдущего звена (1-я в центре окна) и конец, определяемый приращением угла в радианах и
приращением длины соответствующим координатами точки (по модулю 100).
Вычисления – длина спирали.
Характеристика графики – текущая длина построенной спирали.
23. Параметры – координаты 3 точек на плоскости, компоненты rgb-цвета.
Графика – треугольники, каждый из которых имеет вершины в точках элемента массива и
окрашивается в заданный элементом цвет.
Вычисления – сумма площадей треугольников.
Характеристика графики – текущая сумма площадей треугольников.
24. Параметры – координаты 3 точек на плоскости, компоненты rgb-цвета.
Графика – параллелограммы, каждый из которых определен 3-мя вершинами в точках и 2-мя
сторонами, идущими из 1-й точки во 2-ю и 3-ю, и окрашивается в заданный элементом цвет.
Вычисления – сумма площадей параллелограммов.
Характеристика графики – текущая сумма площадей параллелограммов.
25. Параметры – координаты 2 точек на плоскости, компоненты rgb-цвета.
Графика – квадраты, каждый из которых определен 2-мя противолежащими вершинами в точках и окрашивается в заданный элементом цвет.
Вычисления – сумма площадей квадратов.
Характеристика графики – текущая сумма площадей квадратов.
26. Параметры – координаты точек на плоскости, компоненты rgb-цвета.
Графика – круги, каждый из которых имеет центр в центре окна и радиус до точки и окрашен
в заданный цвет (прозрачен для находящихся под ним кругов).
Вычисления – сумма длин окружностей.
Характеристика графики – текущая сумма длин окружностей.
27. Параметры – координаты 2 точек на плоскости, компоненты rgb-цвета.
Графика – прямоугольники, для каждого из которых 1-я точка задает вершину, а 2-я ширину и
высоту прямоугольника, и который окрашен в заданный цвет.
Вычисления – максимальное число взаимно пересекающихся прямоугольников.
Характеристика графики – текущее максимальное число взаимно пересекающихся прямоугольников.
28. Параметры – координаты 2 точек на плоскости, компоненты rgb-цвета.
Графика – ромбы, для каждого из которых точки задают вершины диагонали, а длина 2-й диагонали в 2 раза меньше 1-й, и который окрашен в заданный цвет.
Вычисления – сумма периметров ромбов.
Характеристика графики – текущая сумма периметров ромбов.
29. Параметры – координаты 2 точек на плоскости, компоненты rgb-цвета.
Графика – прямоугольные треугольники, каждый из которых имеет вершину в 1-й точке, параллельные осям катеты, с длинами определяемыми соответствующими координатами 2-й точки, и окрашивается в заданный цвет.
Вычисления – сумма длин периметров треугольников.
Характеристика графики – текущая сумма длин периметров треугольников.
30. Параметры – координаты точки на плоскости, координаты rgb-цвета.
Графика – разбиение на треугольники (начальное разбиение определяется диагоналями окна и
окраской в чистые цвета красный, зеленый, голубой и черный), при котором для
каждой следующей точки определяется треугольник, которому он принадлежит и
он разбивается на 3 треугольника; цвета новых треугольников определяются как
красный, зеленый и голубой.
Вычисления – число треугольников разбиения.
Характеристика графики – текущее число треугольников разбиения.
5
31. Параметры – координаты 3-х точек на плоскости, компоненты rgb-цвета.
Графика – сегменты кругов, каждый из которых определяется центром в 1-й точке, радиусом
во 2-й точке и лучами от центра через 2-ю и 3-ю точки.
Вычисления – сумма площадей сегментов.
Характеристика графики – текущая сумма площадей сегментов.
32. Параметры – координаты 5 точек на плоскости, компоненты rgb-цвета.
Графика – 5-угольники с последовательными вершинами в 5 точках.
Вычисления – максимальная площадь выпуклых оболочек каждого 5-угольника (наименьшего
выпуклого многоугольника, содержащего вершины 5-угольника).
Характеристика графики – текущий максимум площадей выпуклых оболочек.
33. Параметры – координаты 1-й точки на плоскости, компоненты rgb-цвета.
Графика – ломанная с началом в центре окна, каждое звено которой имеет направление к следующей точки и длину звена, равную ½ расстояния до пересечения луча с границей окна (берется ближайшая точка с целыми координатами).
Вычисления – длина ломанной.
Характеристика графики – текущая длина ломанной.
34. Параметры – координаты 3 точек на плоскости, компоненты rgb-цвета.
Графика – ромбы, каждый из которых имеет центр в 1-й точке, одну из вершин во 2-й точке и
другую диагональ, длина которой определяется координатой x 3-й точки (координаты соответствующих вершин при необходимости округляются).
Вычисления – сумма площадей вписанных в ромбы кругов.
Характеристика графики – текущая сумма площадей вписанных кругов.
35. Параметры – координаты 2 точек на плоскости, компоненты rgb-цвета.
Графика – прямоугольники, каждый из которых определен диагональю с вершинами в заданных 2 точках.
Вычисления – сумма минимальных расстояний от каждого прямоугольника до границ рабочей
области окна.
Характеристика графики – текущая сумма минимальных расстояний от прямоугольников до
границ окна.
36. Параметры – координаты 1 точки на плоскости, компоненты rgb-цвета.
Графика – сплайн Безье с началом в центре окна, проходящем через каждую очередную точку
(дополнительные точки сплайна вычисляются как ±1/2(xi+1– xi)).
Вычисления – сумма абсолютных величин углов (в градусной мере), определяемых лучами из
центра окна к 2-м последовательным точкам.
Характеристика графики – текущая сумма углов.
37. Параметры – координаты 1 точки на плоскости, компоненты rgb-цвета.
Графика – треугольники, каждый из которых имеет 1 вершину в очередной точке и 2 другие
вершины в точках границ рабочей области окна, являющихся ближайшими для
данной точки.
Вычисления – сумма наибольших из острых углов (радианная мера) каждого треугольника.
Характеристика графики – текущая сумма наибольших острых углов треугольников.
38. Параметры – координаты 2 точек на плоскости, компоненты rgb-цвета.
Графика – кривая из дуг окружностей, каждая из которых имеет центр во 2-й точке, определенной для предыдущей дуги (для 1-й дуги – в центре окна), проходит через 1-ю
точку от нее против часовой стрелки до направления луча из центра до 2-й точки.
Вычисления – длина кривой.
Характеристика графики – текущая длина кривой
39. Параметры – координаты 1 точки на плоскости, компоненты rgb-цвета.
Графика – отрезки, соединяющие точки (x,0) и (0,y), где (x,y) – заданная точка.
Вычисления – площадь максимальной выпуклой области окна, не содержащей точки отрезков
в качестве внутренних точек области.
Характеристика графики – текущая площадь максимальной выпуклой оболочки.
6
40. Параметры – координаты 1 точки на плоскости, компоненты rgb-цвета.
Графика – выпуклая оболочка точек плоскости (наименьший выпуклый многоугольник, содержащий эти точки).
Вычисления – площадь выпуклой оболочки.
Характеристика графики – текущая площадь выпуклой оболочки.
41. Параметры – координаты 1 точки на плоскости, компоненты rgb-цвета.
Графика – 4-угольники, каждый из которых образован пересечением тех выпуклых 4угольников, которые имеют вершины в заданной точке и 3 других углах окна.
Вычисления – сумма площадей, определяемых 4-угольников.
Характеристика графики – текущая сумма минимальных расстояний от прямоугольников до
границ окна.
42. Параметры – координаты 1 точки на плоскости, компоненты rgb-цвета.
Графика – треугольники с вершинами в 2 предыдущих вершинах предыдущего треугольника
(для 1-го треугольника – 2 угла окна по диагонали слева-сверху направо-вниз) и в
заданной точке.
Вычисления – максимальный периметр треугольника.
Характеристика графики – текущий максимальный периметр треугольника.
43.
Параметры – координаты 1 точки на плоскости, номер квадранта из множества {1,2,3,4},
компоненты rgb-цвета.
Графика – кривая – из дуг эллипсов, для каждого из которых диаметры определены координатами соответствующей точки, а дуга часть эллипса заданного квадранта и начинается в конце предыдущей дуги (начало 1-й дуги в центре окна).
Вычисления – длина кривой.
Характеристика графики – текущая длина кривой.
44. Параметры – координаты 2 точек на плоскости, компоненты rgb-цвета.
Графика – равнобедренные треугольники, каждый из которых имеет 1 вершину в центре окна,
2-ю в 1-й точке и 2-е ребро, равное ребру 1-й вершины во 2-ю и направленное во 2ю точку.
Вычисления – площадь объединения треугольников.
Характеристика графики – текущая площадь объединения.
45. Параметры – координаты 2 точек на плоскости, компоненты rgb-цвета.
Графика – фигуры, каждая из которых является объединением 2-х выпуклых 4-угольников,
образованных 2 точками и одной из сторон окна.
Вычисления – сумма площадей фигур.
Характеристика графики – текущая сумма площадей фигур.
46. Параметры – координаты 2 точек на плоскости, компоненты rgb-цвета.
Графика – треугольники, стороны каждого из которых состоят из отрезков диагоналей окна и
отрезка прямой, проходящей через заданные точки.
Вычисления – сумма периметров треугольников.
Характеристика графики – текущая сумма периметров треугольников.
47. Параметры – координаты 3 точек на плоскости, компоненты rgb-цвета.
Графика – секторы кругов, каждый из которых определен центром в 1-й точке, радиусом до 2й точки и лучами от центра через 2-ю и 3-ю точки (против часовой стрелки от луча
2-й точки).
Вычисления – сумма контуров секторов.
Характеристика графики – текущая сумма контуров секторов.
48. Параметры – координаты 5 точек на плоскости, компоненты rgb-цвета.
Графика – 5-угольники с вершинами в 5 точках и последовательным обходом вершин.
Вычисления – суммарное число точек самопересечение границы каждого 5-угольника.
Характеристика графики – текущее суммарное число точек самопересечения границ каждого
5-угольника.
7
49. Параметры – координаты 3 точек на плоскости, компоненты rgb-цвета.
Графика – 4-угольники с одной вершиной в центре окна и 3-мя вершинами в заданных точках
(в направлении обхода).
Вычисления – площадь объединения 4-угольников.
Характеристика графики – текущая площадь объединения 4-угольников.
50. Параметры – координаты 1 точки на плоскости, компоненты rgb-цвета.
Графика – максимальные квадраты с одной вершиной в заданной точке и остальными вершинами в области с границами (для 1-го квадрата - границы окна), куда попала точка.
Вычисления – минимальная площадь квадрата.
Характеристика графики – текущий минимум площадей квадратов.
III. Функции многопоточности
Для открытия и закрытия потоков применяются следующие функции:
_beginthread(nameProcThread, 0, pParams) – открывает новый поток, связывая его с процедурой,
задаваемой 1-м параметром, с параметрами процедуры, задаваемыми 3-м параметром (указатель на структуру параметров).
_endthread() – завершение потока.
В структуру параметров, которые передаются потоку, рекомендуется включать поле bKill для сообщения потоку о необходимости его прекратить (params.bKill=TRUE;).
Для синхронизации потоков используются переменная критической секции ифункции:
CRITICAL_SECTION cs;
// описание переменной критической секции
InitializeCriticalSection(&cs);
// создание объекта критической секции
EnterCriticalSection(&cs);
// вход в критическую секцию (только один поток становится
владельцем, другие потоки, вызывающие эту функцию, задерживаются
LevelCriticalSection();
// поток, владеющий критической секцией, покидает ее (другой
поток, ожидающий входа в критическую секцию, становится
владельцем)
DeleteCriticalSection();
// удаление объекта критической секции (переменная еще существует)
Для синхронизации с помощью событий используется описатель события и функции:
HANDLE hEvent;
// переменная описатель события
hEvent=CreateEvent(&sa, fManual, fInitial, pszName); // создание объекта событие; параметры:
// sa – переменная типа SECURITY_ATRIBUTES (используется
// между процессами; для одного процесса NULL);
// fManual – реакция на возврат из функции WaitForSingleObject
// (если нет необходимости – FALSE);
// fInitial – начальное состояние события (TRUE – свободное;
FALSE – занятое);
// pszName – имя объекта события (используется между процессами; для одного процесса - NULL).
SetEvent(hEvent);
// делает объект свободным
ResetEvent();
// делает объект занятым
WaitForSingleObject(hEvent, dwTimeOut); // задержка при занятом событии либо до его освобождения, либо до истечения интервала времени, заданного вторым
параметром (если второй параметр INFINITE, то бесконечное
время ожидания); при занятом событии функция сразу же возвращает значение.
8
Download