Механизмы параллельных вычислений в Windows. Разработка справочной системыРефераты >> Программирование и компьютеры >> Механизмы параллельных вычислений в Windows. Разработка справочной системы
Рекомендуемые характеристики:
1. тактовая частота микропроцессора 500 MГц
2. оперативная память - 128 Mб
3. видеокарта – 16 Мб оперативной памяти.
4. монитор – 15 ”, 32 бит цветопередача.
5. операционная система – Windows 2k/ XP/ .NET.
ВЫВОД
Главным критерием качества распараллеливания вычислений является сокращение общего времени решения задачи. На основе параллельных вычислений разработано параллельное программирование, но оно представляет дополнительные источники сложности - необходимо явно управлять работой тысяч процессоров, координировать миллионы межпроцессорных взаимодействий. Решение этих вопросов было рассмотрено в теоретической части курсового проекта.
Во второй (практической) части курсового проекта, была рассмотрена программа для рисования графических примитивов и вызова справки по функциям WinAPI. Данная программа может быть использована в обучающих целях, при рассмотрении задач рисования графических примитивов.
В программе были решены такие задачи:
1. Выбор графических фигур,
2. прорисовки выбранных фигур на экране,
3. вызов справки.
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
1. Саймон Р. Windows 2000 API. Энциклопедия программиста. – К.: ООО "ДиасофтЮП", 2002. – 1085 с.
2. http://parallel.ru/vvv/lec7.html
3. http://www.ccas.ru/paral/prog/comm_msg/intro.html
5. http://osp.admin.tomsk.ru/os/index.htm
6. http://www.csa.ru/~il/pvm_tutor/
7. MSDN
ПРИЛОЖЕНИЕ А
ЛИСТИНГ ПРОГРАММЫ
//Файл Shapes.cpp
#define STRICT
#include <windows.h>
#pragma hdrstop
#include <string.h>
#include <windowsx.h>
#include "shapes.h"
char szAppName[10]; // name of application
HINSTANCE hInst; // hInstance of application
HWND hWndMain; // hWnd of main window
HWND hQryDlgBox; // handle of modeless dialog box
HWND hDlgSelect;
HGLOBAL hdlgr; // handle of dialog resource
FARPROC lpModelessProc; // pointer to proc for modeless box
HDC hdc;
PAINTSTRUCT ps;
HMENU hMenu, hMenuFile, hMenuAvt;
bool flag = false;
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdLine, int cmdShow);
void InitMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdLine, int cmdShow);
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam);
void InitMainDlg(HWND hWnd);
BOOL CALLBACK MainDlgBoxProc(HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK Select(HWND, UINT, WPARAM, LPARAM); // диалог выбора фигур
void fillb(HWND hDlg, int ID);
void PaintShapes(HWND hDlg);
//---------------------------------------------------------------------
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdLine, int cmdShow)
{
MSG msg;
// Go init this application.
InitMain(hInstance, hPrevInstance, lpszCmdLine, cmdShow);
// Get and dispatch messages for this applicaton.
while (GetMessage(&msg, NULL, 0, 0))
{
if(!hQryDlgBox || !IsWindow(hQryDlgBox) ||
!IsDialogMessage( hQryDlgBox, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return(msg.wParam);
}
void InitMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdLine, int cmdShow)
{
WNDCLASS wcMainClass;
// Get string from resource with application name.
LoadString(hInstance, IDS_NAME, (LPSTR)szAppName, 10);
// Define the window class for this application.
wcMainClass.lpszClassName = szAppName;
wcMainClass.hInstance = hInstance;
wcMainClass.lpfnWndProc = MainWndProc;
wcMainClass.hCursor = LoadCursor(NULL, IDC_ARROW);
wcMainClass.hIcon = LoadIcon(hInstance, szAppName);
wcMainClass.lpszMenuName = (LPSTR) NULL;
wcMainClass.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE);//GetStockObject(WHITE_BRUSH);
wcMainClass.style = CS_HREDRAW | CS_VREDRAW;
wcMainClass.cbClsExtra = 0;
wcMainClass.cbWndExtra = 0;
// Register the class
RegisterClass(&wcMainClass);
hInst = hInstance; // save for use by window procs
// Create applications main window.
hWndMain = CreateWindow(
szAppName,
szAppName,
WS_BORDER |
WS_CAPTION |
WS_SYSMENU |
WS_MINIMIZEBOX,
10,
19,
256,
123,
NULL,
NULL,
hInstance,
NULL
);
// Create a thunk for the main dialog box proc function.
lpModelessProc = MakeProcInstance((FARPROC)MainDlgBoxProc, hInst);
InitMainDlg(hWndMain);
}
//*******************************************************************
// MainWndProc - handles messages for this application
//
// paramaters:
// hWnd - The window handle for this message
// message - The message number
// wParam - The WPARAM parmater for this message
// lParam - The LPARAM parmater for this message
//
// returns:
// depends on message.
//
//*******************************************************************
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_MOVE:
// Move the dialog box on top of our main window every
// time the main window moves.
if (IsWindow(hQryDlgBox))
SendMessage(hQryDlgBox, message, wParam, lParam);
break;
case WM_SETFOCUS:
// Always set the input focus to the dialog box.
if (IsWindow(hQryDlgBox))
SendMessage(hQryDlgBox, message, wParam, lParam);
break;
case WM_CLOSE:
// Tell windows to destroy our window.
DestroyWindow(hWnd);
break;
case WM_QUERYENDSESSION:
// If we return TRUE we are saying it's ok with us to end the
// windows session.
return((long) TRUE); // we agree to end session.
case WM_ENDSESSION:
// If wParam is not zero, it meany every application said ok
// to WM_QUERYENDSESSION messages, so we are really ending.
// if all apps aggreed to end session.
// This is the end. We will not get a
// WM_DESTROY message on end session.
break;
case WM_DESTROY:
// This is the end if we were closed by a DestroyWindow call.
PostQuitMessage(0);
break;
default:
return(DefWindowProc(hWnd, message, wParam, lParam));
}
return(0L);
}
//*******************************************************************
// InitMainDlg - put up modeless dialog box
//
// paramaters:
// hWnd - The window handle of the caller
//
//*******************************************************************