- •Министерство образования и науки российской федерации
- •«Самарский государственный технический университет»
- •Ю. В. Калмыков, а. В. Тараканов
- •Введение
- •1. Содержание и объем курсовой работы
- •2. Оформление курсовой работы
- •3. Распараллеливание обработки
- •4. Потоковая обработка информации
- •4.1. Организация потоковой обработки информации
- •4 14 .2. Построение программ коммутации
- •Программа коммутации
- •5. Организация параллельных
- •6. Пример создания мультипоточного
- •В качестве альтернативного способа достижения высокой скорости вычислений является написание программного кода на языке ассемблера.
- •7. Определение временных
- •Первоначально необходимо установить настройки среды программирования, как показано на рис. 7.1 – 7.3.
- •8. Порядок выполнения работы
- •9. Содержание расчетно-пояснительной
- •Сызрань 2010 Приложение п2
- •1) Функция изменения состояния синхронизирующего объекта события, устанавливающая его в состояние “Включено”.
- •Продолжение прил. П2
- •Продолжение прил. П2
- •Продолжение прил. П2
- •Окончание прил. П2
- •Продолжение прил. П3
- •Продолжение прил. П3
- •Продолжение прил. П3
- •Продолжение прил. П3
- •Продолжение прил. П3
- •Окончание прил. П3
- •Приложение п5
- •Продолжение прил. П5
- •Продолжение прил. П5
- •Окончание прил. П5
- •Приложение п6
- •Библиографический список
- •Оглавление
- •Системное программное обеспечение
- •443100, Г. Самара, ул. Молодогвардейская, 244. Главный корпус
- •446001, Г. Сызрань, ул. Советская, 45
Продолжение прил. П3
MessageBox(hDlg, "Enter all variables and run again!", "Attention", MB_ICONINFORMATION);
return false;
}
//Функция отправки сообщения
//в ListBox (в данном случае
//очистка ListBox)
SendDlgItemMessage(hDlg, IDC_LISTING, LB_RESETCONTENT, 0, 0);
//Цикл по созданию тредов
for(int a = THREAD1;
a <= THREAD4; a++) {
//Заполнение массива
//hThread хендлами
//тредов
hThread[a] =
CreateThread(NULL,
NULL, pThread[a], NULL,
NULL, &ThreadID);
//Установка приоритетов
//тредов
SetThreadPriority(hThread[a],
THREAD_PRIORITY_TIME_CRITICAL);
}
//Функции "активации
//деактивации"
//кнопок START и TERMINATE
EnableWindow(GetDlgItem(hDlg,
IDC_START), false);
EnableWindow(GetDlgItem(hDlg,
IDC_TERMINATE), true);
}
break;
//Обработка сообщения по нажатии
//кнопки TERMINATE
case IDC_TERMINATE: {
Продолжение прил. П3
//Цикл по принудительному
//завершению
//всех тредов (функция
//TerminateThread)
for(int a = THREAD1; a <=
THREAD4; a++) {
TerminateThread(hThread[a],
false);
}
//Функции "активации
//деактивации"
//кнопок START и TERMINATE
EnableWindow(GetDlgItem(hDlg,
IDC_TERMINATE), false);
EnableWindow(GetDlgItem(hDlg,
IDC_START), true);
}
}
}
break;
//Обработка сообщения при создании диалогового
//приложения
case WM_INITDIALOG: {
hMainDlg = hDlg;
//Функция отправки сообщения
SendMessage(hDlg, WM_SETICON, ICON_BIG,
(LPARAM)LoadIcon(0, IDI_EXCLAMATION));
}
break;
//Обработка сообщения по нажатии кнопки CLOSE
case WM_CLOSE:
//Функция завершения диалогового
//приложения
EndDialog(hDlg, 0);
}
return false;
}
//Точка входа в программу
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
//Цикл по созданию объектов события функцией
//CreateEvent
for(int a = S12; a <= S41; a++)
Окончание прил. П3
event_obj[a] = CreateEvent(NULL, false, false,
NULL);
//Функция создания диалогового окна
DialogBoxParam(hInstance,
MAKEINTRESOURCE(IDD_MAINDLG), 0, (DLGPROC)DlgProc,
0);
return false;
}
Приложение П4
#ifndef MAIN_H
#define MAIN_H
#define A 0
#define B 1
#define C 2
#define D 3
#define E 4
#define F 5
#define G 6
#define H 7
#define I 8
#define J 9
#define K 10
#define L 11
#define M 12
#define S12 0
#define S13 1
#define S32 2
#define S24 3
#define S31 4
#define S41 5
#define THREAD1 0
#define THREAD2 1
#define THREAD3 2
#define THREAD4 3
//Организация макроподстановки для вывода состояний тредов
//в ListBox
//с помощью функции SendDlgItemMessage
#define addstr(str) SendDlgItemMessage(hMainDlg,
IDC_LISTING, LB_ADDSTRING, 0,
(LPARAM)#str); \
SendDlgItemMessage(hMainDlg,
IDC_LISTING, LB_SETTOPINDEX, \
SendDlgItemMessage(hMainDlg,
IDC_LISTING, LB_GETCOUNT, 0, 0) –
1, 0)
void Thread1();
void Thread2();
void Thread3();
void Thread4();
#endif
Приложение п5
.model small
.stack 20h ; 6 bytes needed
.data
A equ 24
B equ 22
C equ 20
D equ 18
E equ 16
F equ 14
G equ 12
H equ 10
I equ 8
J equ 6
K equ 4
L equ 2
M equ 0
in_string db 'Введите число A = $'
in_array dw 13 dup (0)
otvet db 13,10,'Ответ равен $'
press_enter db 13,10,13,10,'Нажмите <Enter> для
завершения...$'
.code
entrypoint:
mov ax,@data
mov ds,ax
mov cx,13
@1: xor si,si
mov dx,offset in_string
mov ah,9
int 21h
@3: mov ah,8
int 21h
cmp al,0Dh
je @2
cmp al,'0'
jb @3
cmp al,'9'
ja @3
mov ah,2
mov dl,al
int 21h
