Составители:
2. Рассмотреть исходный код программы. Первоначально рассмотреть
функции инициализации. Данный класс функций регистрируют два класса
окон, один из которых предназначен для главного окна, а другой - для дочерних
окон, в которых потоки выполняют свои графические операции. Кроме того,
создается таймер, позволяющий с пятисекундным интервалом обновлять в
списке информацию о каждом из потоков. Функция CreateWindows создает и
позиционирует все окна, в том числе и список, в котором содержится
информация о каждом потоке. Четыре потока создаются в обработчике
сообщения WM_CREATE.
/* WIN MAIN - вызов функции инициализации и запуск цикла обработки
сообщений */
int WINAPI WinMain ( HINSTANCE hinstThis, HINSTANCE hinstPrev,
LPSTR lpszCmdLine, int iCmdShow )
{
MSG msg;
hInst = hinstThis; // запись в глобальную переменную
if (! InitializeApp ( ))
{ //выход из программы, если приложение не было инициализировано
return( 0 ) ;
}
ShowWindow ( hwndParent, iCmdShow );
UpdateWindow( hwndParent );
// получение сообщений из очереди
while ( GetMessage( &msg, NULL, 0, 0 ) )
{
TranslateMessage( &msg ) ;
DispatchMessage ( &msg ) ;
}
return( msg.wParam );
}
Обратить внимание на отсутствие функции PeekMessage. Это - наглядное
свидетельство того, что в приложении реализована приоритетная
многозадачностью. (Многозадачность данного типа подразумевает, что система
прерывает выполнение потока, предоставляя другим потокам возможность
получить доступ к ресурсам центрального процессора. При кооперативной
многозадачности система ожидает, пока поток не вернет ей управление над
процессором.) Потоки имеют возможность непрерывно производить экранные
операции, не монополизируя процессор. В это же время могут выполняться и
другие программы.
Помимо регистрации класса приложения и выполнения стандартных
действий по инициализации, функция InitializeApp задает приоритеты потоков
и запускает все потоки в режиме ожидания.
5
2. Рассмотреть исходный код программы. Первоначально рассмотреть функции инициализации. Данный класс функций регистрируют два класса окон, один из которых предназначен для главного окна, а другой - для дочерних окон, в которых потоки выполняют свои графические операции. Кроме того, создается таймер, позволяющий с пятисекундным интервалом обновлять в списке информацию о каждом из потоков. Функция CreateWindows создает и позиционирует все окна, в том числе и список, в котором содержится информация о каждом потоке. Четыре потока создаются в обработчике сообщения WM_CREATE. /* WIN MAIN - вызов функции инициализации и запуск цикла обработки сообщений */ int WINAPI WinMain ( HINSTANCE hinstThis, HINSTANCE hinstPrev, LPSTR lpszCmdLine, int iCmdShow ) { MSG msg; hInst = hinstThis; // запись в глобальную переменную if (! InitializeApp ( )) { //выход из программы, если приложение не было инициализировано return( 0 ) ; } ShowWindow ( hwndParent, iCmdShow ); UpdateWindow( hwndParent ); // получение сообщений из очереди while ( GetMessage( &msg, NULL, 0, 0 ) ) { TranslateMessage( &msg ) ; DispatchMessage ( &msg ) ; } return( msg.wParam ); } Обратить внимание на отсутствие функции PeekMessage. Это - наглядное свидетельство того, что в приложении реализована приоритетная многозадачностью. (Многозадачность данного типа подразумевает, что система прерывает выполнение потока, предоставляя другим потокам возможность получить доступ к ресурсам центрального процессора. При кооперативной многозадачности система ожидает, пока поток не вернет ей управление над процессором.) Потоки имеют возможность непрерывно производить экранные операции, не монополизируя процессор. В это же время могут выполняться и другие программы. Помимо регистрации класса приложения и выполнения стандартных действий по инициализации, функция InitializeApp задает приоритеты потоков и запускает все потоки в режиме ожидания. 5
Страницы
- « первая
- ‹ предыдущая
- …
- 3
- 4
- 5
- 6
- 7
- …
- следующая ›
- последняя »