Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Задания на лабораторную работу



1) Написать программу, порождающую четыре потока, каждому из которых выделяется четвертая часть окна приложения. Первый поток выводит, в свою область, возрастающую числовую последовательность 0,1,2,…. Второй – последовательность чисел Фибоначчи. Третий поток заполняет свой участок окна прямоугольниками случайного размера и цвета. Четвертый поток фиксирует в трех переменных и выводит их в своей области окна число запусков каждого из предыдущих трех потоков (снимок состояния всех поток на момент времени).

2) Написать программу, порождающую поток по нажатию одной из клавиш клавиатуры. Каждому созданному таким образом потоку соответствует окружность в окне приложения, которая появляется в случайном месте окна приложения и движется либо по вертикали, либо по горизонтали. При достижении границы окна, окружность меняет направление своего движения на противоположное. При помощи объектов синхронизации (семафоров или событий) реализовать алгоритм движения шаров без столкновений.

3) В программе создать два потока. Назначение одного из них – периодическое чтение системного времени и заполнение глобальной структуры (часы, минуты, секунды), второго – вывод данной структуры на экран. При помощи критического раздела организовать раздельный доступ потоков к структуре данных.

4) Написать программу, содержащую четыре потока, каждый из которых управляет движением одного из шаров. Первые два шара двигаются горизонтально, вторые – вертикально. Скорость шаров различна. При достижении границы клиентской области окна, шар меняет направление движения на противоположное. При помощи объектов синхронизации (семафоров или событий) реализовать алгоритм движения шаров без столкновений.

5) Написать программу, которая запускает новый поток при нажатии левой клавиши мыши. Поток начинает выводить возрастающую числовую последовательность в текущую позицию курсора мыши. При нажатии правой клавиши мыши программа удаляет поток, координаты которого ближе всего к положению мыши. При помощи объектов синхронизации реализовать алгоритм разделения критических ресурсов.

6) Создать многопоточную программу, формирующую потоки трех типов. Каждый из потоков запускается соответствующим пунктом меню и захватывает соответственно 1,2,3 ресурса (максимальное число ресурсов по умолчанию – 8 и может меняться пользователем в окне диалога, вызываемом через меню). Количество, вид потоков, а также их состояние выводится на экран. Если число ресурсов не позволяет работать потоку, он находится в состоянии ожидания. Удаление потоков осуществляется через меню в порядке запуска (первым удаляется поток, запущенный первым). При помощи объектов синхронизации реализовать алгоритм разделения критических ресурсов

7) Написать программу, которая по нажатию мыши создает потоки: по нажатию правой клавиши – поток, производящий вывод возрастающего ряда в позицию курсора, левой – поток с убывающим рядом. Поток выгружается из памяти по окончанию счета. Число потоков ограничивается пользователем через контекстное меню и находится в диапазоне [4,8]. При помощи объектов синхронизации реализовать алгоритм разделения критических ресурсов

8) Написать программу, которая читает с диска *.bmp файл и выводит его в окно приложения. При помощи потока организовать поворот изображения на 90 градусов. Операцию можно прервать при помощи диалогового окна, возникающего на время выполнения операции. При помощи объектов синхронизации реализовать алгоритм разделения критических ресурсов

9) Написать программу, которая позволяет запускать процессы, используя для этого выбранные на диске файлы. Пользователь может задавать имя запускаемого файла и командную строку. Программа следит за всеми запущенными ею процессами и выводит по требованию пользователя следующую информацию: имя процесса, значение указателя и идентификатора процесса, время выполнения процесса.

Контрольные вопросы и задания

1) Поясните принцип многозадачности современных операционных систем.

2) Чем отличается многозадачность от многопоточности?

3) Каким образом аппаратно решаются задачи обеспечения многозадачности?

4) Приведите примеры использования многопоточности в прикладных программах.

5) Каким образом осуществляется синхронизация потоков?

6) Что такое "критический раздел"?

7) Что такое "событие"?

8) Объясните назначение локальной и глобальной памяти потоков.

Лабораторная работа №3
УПРАВЛЕНИЕ РАСПРЕДЕЛЕНИЕМ ПАМЯТИ (WIN API)





Дата публикования: 2015-01-13; Прочитано: 310 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...