Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 2.doc
Скачиваний:
18
Добавлен:
13.02.2015
Размер:
1.23 Mб
Скачать

Пример работы с потоками

DWORD WINAPI ThreadProc( LPVOID lpParam ) // пользовательская функция потока

{

int S = 0;

int n = *(int*)(lpParam);

for (int i=1; i< n; i++) {

S++;

}

Form1->Edit2->Text = S;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::CreateClick(TObject *Sender)

{

HANDLE hThread; //дескриптор потока

DWORD dwThreadId; //идентификатор потока

int n;

n = Edit1->Text.ToInt();

hThread = CreateThread( // создание потока

NULL, // атрибуту защиты по умолчанию

0, // Размер стека по умолчанию

ThreadProc, // Функция потока

&n, // Аргумент поточной функции

0, // Флаги создания

&dwThreadId); // возвращаемый идентификатор потока

CloseHandle(hThread); //удаление объекта потока из памяти

}

Программа работы

  1. В папке «Параллельное программирование» создать подпапку «Лабораторная работа №2».

  2. Запустить программу C++ Builder XEи создать новый проект с типомVCL Forms Application.

  3. Сохранить все его файлы в папке с именем «Лабораторная работа №2», задав название проекта по Вашей фамилии на английском языке (расширение cbproj).

  4. Разработать форму, показанную на рисунке 1.

Рис. 1. Интерфейс формы

  1. В обработчике кнопки «Рассчитать» разработать программу для нахождения суммы ряда, в соответствии с заданием своего варианта (Таблица №1).

Таблица №1

Варианты задания

Варианта

Ряд

Варианта

Ряд

1

14

2

15

3

16

4

17

5

18

6

19

7

20

8

21

9

22

10

23

11

24

12

25

13

26

  1. Запустить проект на выполнение командой Run(F9) и подобрать количество слагаемых, необходимых для расчета суммы ряда с заданной точностью (ε =10-10).

  2. Разработать главное меню приложения следующим образом.

  1. В обработчике пункта «Создать» предусмотреть выполнение предыдущей программы в отдельном потоке.

  2. Вычислить время выполнения потока при разных классах приоритетах процессах и относительных приоритетах потоков с помощью программы ProcessExplorer. Результаты представить в отчете в виде таблицы, с указанием номера приоритета, класса процесса и относительного приоритета потока.

  3. Обработать подпункты меню «Поток для созданая потока в режиме ожидания», возобновления, приостановки и удаления его. Подтвердить их работоспособность с помощью программы Process Explorer. Записать в отчет обработчики подпунктов и вставить скриншоты программыProcess Explorer.

Приложение 1

Полные суммы рядов Маклорена