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

UptoLike

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

/*INITIALIZE APP - регистрация двух классов и создание окон. */
BOOL InitializeApp ( void )
{
// Пометить исходное состояние каждого потока как SUSPENDED
// сразу при их создании.
for( iCount = 0; iCount < 4; iCount++ )
{
iState[iCount] = SUSPENDED;
}
// Задать первичному потоку более высокий приоритет,
// что позволит ускорить ввод/вывод команд пользователем.
SetThreadPriority( GetCurrentThread(),
THREAD_PRIORITY_ABOVE_NORMAL );
// Создать все окна.
return( CreateWindows( ) );
}
Вызов функции SetThreadPriority приводит к увеличению приоритета
первичного потока. Если все вторичные потоки будут иметь такой же
приоритет, как и первичный, то реакция на выбор команд меню будет очень
медленной. Убедиться в этом, запустив программу и повысив приоритет
вторичных потоков.
Функция CreateWindow создает не только основное окно, но и список, а
также набор дочерних окон для потоков.
/* CREATE WINDOWS - создать главное окно, окно списка и четыре дочерних
окна */
BOOL CreateWindows ( void )
{
char szAppName[MAX_BUFFER] ;
char szTitle[MAX_BUFFER] ;
char szThread[MAX_BUFFER];
HMENU hMenu;
int iCount;
// загрузка соответствующих строк
LoadString( hInst, IDS_APPNAME, szAppName, sizeof(szAppName));
LoadString( hInst, IDS_TITLE, szTitle, sizeof(szTitle));
LoadString( hInst, IDS_THREAD, szThread, sizeof(szThread));
// создать родительское окно
hMenu = LoadMenu( hInst, MAKEINTRESOURCE(MENU_MAIN) );
hwndParent = CreateWindow( szAppName, szTitle,
WS_OVERLAPPEDWINDOW |
WS_CLIPCHILDREN,
CW_USEDEFAULT, CW_USEDEFAULT,
6
/*INITIALIZE APP - регистрация двух классов и создание окон. */
BOOL InitializeApp ( void )
{
      …
             // Пометить исходное состояние каждого потока как SUSPENDED
             // сразу при их создании.
      for( iCount = 0; iCount < 4; iCount++ )
      {
             iState[iCount] = SUSPENDED;
      }
             // Задать первичному потоку более высокий приоритет,
             // что позволит ускорить ввод/вывод команд пользователем.
      SetThreadPriority( GetCurrentThread(),
THREAD_PRIORITY_ABOVE_NORMAL );
             // Создать все окна.
      return( CreateWindows( ) );
}
      Вызов функции SetThreadPriority приводит к увеличению приоритета
первичного потока. Если все вторичные потоки будут иметь такой же
приоритет, как и первичный, то реакция на выбор команд меню будет очень
медленной. Убедиться в этом, запустив программу и повысив приоритет
вторичных потоков.
      Функция CreateWindow создает не только основное окно, но и список, а
также набор дочерних окон для потоков.

/* CREATE WINDOWS - создать главное окно, окно списка и четыре дочерних
окна */
BOOL CreateWindows ( void )
{
      char szAppName[MAX_BUFFER] ;
      char szTitle[MAX_BUFFER] ;
      char szThread[MAX_BUFFER];
      HMENU hMenu;
      int iCount;
             // загрузка соответствующих строк
      LoadString( hInst, IDS_APPNAME, szAppName, sizeof(szAppName));
      LoadString( hInst, IDS_TITLE, szTitle, sizeof(szTitle));
      LoadString( hInst, IDS_THREAD, szThread, sizeof(szThread));
             // создать родительское окно
      hMenu = LoadMenu( hInst, MAKEINTRESOURCE(MENU_MAIN) );
      hwndParent = CreateWindow( szAppName, szTitle,
                               WS_OVERLAPPEDWINDOW |
                          WS_CLIPCHILDREN,
                               CW_USEDEFAULT, CW_USEDEFAULT,

                                    6