Операционные системы. Марапулец Ю.В. - 5 стр.

UptoLike

Составители: 

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