Мобильное программирование приложений реального времени в стандарте POSIX




Пример 1.16 - часть 2


printf ("Приоритет планирования: %d\n",

shdprm.sched_priority);

assert (pthread_attr_getscope (&patob, &res) == 0);

switch (res) {

case PTHREAD_SCOPE_SYSTEM:

spname = "Система";

break;

case PTHREAD_SCOPE_PROCESS:

spname = "Процесс";

break;

default:

spname = "Неизвестная область планирования "

"конкуренции";

}

printf ("Область планирования конкуренции: %s\n", spname);

assert (pthread_attr_getinheritsched (&patob, &res) == 0);

switch (res) {

case PTHREAD_INHERIT_SCHED:

spname = "Наследуются у родительского потока";

break;

case PTHREAD_EXPLICIT_SCHED:

spname = "Извлекаются из атрибутного объекта";

break;

default:

spname = "Устанавливаются неизвестным образом";

}

printf ("Атрибуты планирования: %s\n", spname);

assert (pthread_attr_getdetachstate (&patob, &res) == 0);

switch (res) {

case PTHREAD_CREATE_JOINABLE:

spname = "Присоединяемые";

break;

case PTHREAD_CREATE_DETACHED:

spname = "Обособленные";

break;

default:

spname = "Неизвестные";

}

printf ("Потоки управления создаются как: %s\n", spname);

/* Изменим значения атрибутов планирования и уровня */

/* параллелизма */

shdprm.sched_priority = 1;

if ((errno = pthread_setschedparam (ct_id, SCHED_RR,

&shdprm)) != 0) {

perror ("PTHREAD_SETSCHEDPARAM");

}

if ((errno = pthread_setconcurrency (8192)) != 0) {

perror ("PTHREAD_SETCONCURRENCY");

}

printf ("\nТекущие значения атрибутов потоков управления\n");

assert (pthread_getschedparam (ct_id, &res, &shdprm) == 0);

switch (res) {

case SCHED_FIFO:

spname = "Планирование по очереди";

break;

case SCHED_RR:

spname = "Циклическое планирование";

break;

case SCHED_OTHER:

spname = "Прочее планирование";

break;

default:

spname = "Неизвестная политика планирования";

}

printf ("Политика планирования: %s\n", spname);

printf ("Приоритет планирования: %d\n",

shdprm.sched_priority);

printf ("Уровень параллелизма: %d\n",

pthread_getconcurrency());

return 0;

}




Содержание  Назад  Вперед