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

UptoLike

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

// для окон всех потоков
bUseMutex = !bUseMutex; // переключение параметров
// исключающего семафора
default:
break;
}
return;
}
4. Рассмотреть функции изменения параметров.
Функция DoThread в
ответ на соответствующие команды меню изменяет параметры потока,
выбранного в списке. Эта функция может повысить или понизить приоритет
потока, а также приостановить или возобновить его выполнение. Текущее
состояние каждого потока записывается в массив iState. В массиве hThreads
сохраняются дескрипторы каждого из четырех вторичных потоков.
/*DO THREAD - Изменяет приоритет потока или его состояние в ответ на
команды меню. */
void DoThread( int iCmd )
{
int iThread;
int iPriority;
// Определяет, какой из потоков выбран.
iThread = ListBox_GetCurSel ( hwndList ) ;
switch ( iCmd )
{
case IDM_SUSPEND:
// Если поток не остановлен, останавливает его.
if( iStatefiThread] != SUSPENDED )
{
Suspend/Thread ( hThread[iThread] );
iState[iThread] = SUSPENDED;
}
break;
case IDM_RESUME:
// Если поток не активен, активизирует его.
if( iState[iThread] != ACTIVE )
{
ResumeThread( hThread(iThread] );
iState[iThread] = ACTIVE;
}
break;
case IDM_INCREASE:
// Повышает приоритет потока, если только он
12
                                      // для окон всех потоков
                 bUseMutex = !bUseMutex; // переключение параметров
                                      // исключающего семафора
           default:
                 break;
     }
     return;
}

     4. Рассмотреть функции изменения параметров. Функция DoThread в
ответ на соответствующие команды меню изменяет параметры потока,
выбранного в списке. Эта функция может повысить или понизить приоритет
потока, а также приостановить или возобновить его выполнение. Текущее
состояние каждого потока записывается в массив iState. В массиве hThreads
сохраняются дескрипторы каждого из четырех вторичных потоков.

/*DO THREAD - Изменяет приоритет потока или его состояние в ответ на
команды меню. */
void DoThread( int iCmd )
{
      int iThread;
      int iPriority;
             // Определяет, какой из потоков выбран.
      iThread = ListBox_GetCurSel ( hwndList ) ;
      switch ( iCmd )
      {
             case IDM_SUSPEND:
                     // Если поток не остановлен, останавливает его.
                     if( iStatefiThread] != SUSPENDED )
                     {
                             Suspend/Thread ( hThread[iThread] );
                             iState[iThread] = SUSPENDED;
                     }
                     break;
             case IDM_RESUME:
                             // Если поток не активен, активизирует его.
                     if( iState[iThread] != ACTIVE )
                     {
                             ResumeThread( hThread(iThread] );
                             iState[iThread] = ACTIVE;
                     }
                     break;
             case IDM_INCREASE:
                             // Повышает приоритет потока, если только он

                                      12