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

UptoLike

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

(LPTHREAD_START_ROUTINE) StartThread,
(LPVOID) ( & ( dwThreadData[iCount] ) ),
CREATE_SUSPENDED, (LPDWORD) ( & (
dwThreadID(iCount] ) ) );
if( ! hThread[iCount] ) // Был ли поток создан?
{
return( FALSE ) ;
}
}
// создание таймера с пятисекундным периодом срабатывания;
// использование таймера для обновления списка
uRet = SetTimer( hWnd, TIMER, 5000, NULL );
if( ! uRet )
{ // создать таймер не удалось
return( FALSE ) ;
}
// создание исключающего семафора
hDrawMutex = CreateMutex( NULL, FALSE, NULL );
if( ! hDrawMutex )
{ //не удалось создать исключающий семафор
KillTimer( hWnd, TIMER ); // остановка таймера
return( FALSE ) ;
}
// запуск потоков с приоритетом ниже стандартного
for( iCount = 0; iCount < 4; iCount++ )
{
SetThreadPriority( hThread[iCount],
THREAD_PRIORITY_BELOW_NORMAL );
iState[iCount] = ACTIVE;
ResumeThread( hThread[iCount] );
}
// Теперь запущены все
четыре потока! return( TRUE ) ;
}
Функция Main_OnSize не только изменяет размер окна приложения, но и
корректирует размеры и положение всех дочерних окон.
/* MAIN_ONSIZE - Позиционирует окно списка и четыре дочерних окна. */
void Main_OnSize( HWND hWnd, UINT uState, int cxClient, int cyClient )
{
char* szText =-"No Thread Data";
int iCount;
// Приостанавливает активные потоки, пока не будет завершено
// изменение размеров и обновление соответствующих окон.
9
                 (LPTHREAD_START_ROUTINE) StartThread,
                 (LPVOID) ( & ( dwThreadData[iCount] ) ),
                 CREATE_SUSPENDED, (LPDWORD) ( & (
          dwThreadID(iCount] ) ) );
          if( ! hThread[iCount] )              // Был ли поток создан?
          {
                 return( FALSE ) ;
          }
     }
            // создание таймера с пятисекундным периодом срабатывания;
            // использование таймера для обновления списка
     uRet = SetTimer( hWnd, TIMER, 5000, NULL );
     if( ! uRet )
     {                                          // создать таймер не удалось
            return( FALSE ) ;
     }
            // создание исключающего семафора
     hDrawMutex = CreateMutex( NULL, FALSE, NULL );
     if( ! hDrawMutex )
     {                            //не удалось создать исключающий семафор
            KillTimer( hWnd, TIMER );          // остановка таймера
            return( FALSE ) ;
     }
            // запуск потоков с приоритетом ниже стандартного
     for( iCount = 0; iCount < 4; iCount++ )
     {
            SetThreadPriority( hThread[iCount],
     THREAD_PRIORITY_BELOW_NORMAL );
            iState[iCount] = ACTIVE;
            ResumeThread( hThread[iCount] );
     }
            // Теперь запущены все четыре потока! return( TRUE ) ;
}

     Функция Main_OnSize не только изменяет размер окна приложения, но и
корректирует размеры и положение всех дочерних окон.

/* MAIN_ONSIZE - Позиционирует окно списка и четыре дочерних окна. */
void Main_OnSize( HWND hWnd, UINT uState, int cxClient, int cyClient )
{
      char* szText =-"No Thread Data";
      int iCount;
// Приостанавливает активные потоки, пока не будет завершено
// изменение размеров и обновление соответствующих окон.

                                      9