Шрифт:
Это выполняется с помощью двух функций:
С параметром policy все просто — это либо SCHED_FIFO, либо SCHED_RR, либо SCHED_OTHER.
Параметр param — структура, которая содержит единственный элемент: sched_priority. Задайте этот параметр путем прямого присвоения ему значения желаемого приоритета.
Плавали, знаем. :-)
На том, что QSSL зарезервировала нулевой приоритет только для «холостого» потока, уже «прокололось» немало программистов. Поток с нулевым приоритетом просто не сможет выполняться.
Давайте рассмотрим ряд примеров. Будем считать, что в обсуждаемой программе подключены нужные заголовочные файлы (
Самый обычный способ создания потока — просто оставить везде значения по умолчанию:
В вышеупомянутом примере мы создали наш новый поток со значениями параметров по умолчанию и передали ему NULL в качестве его единственного параметра (третий NULL в указанном выше вызове pthread_create).
Вообще говоря, вы можете передавать вашему новому потоку что угодно через параметр arg. Например, число 123:
Более сложный пример — создание «обособленного» (detached) потока с диспетчеризацией карусельного типа (RR) и приоритетом 15:
Для того чтобы увидеть, как «выглядит» многопоточная программа, можно запустить из командного интерпретатора команду
Вы можете видеть, что процесс
Теперь, когда мы знаем все о создании потоков, давайте рассмотрим, как и где мы можем этим воспользоваться.
Существует два класса задач, где можно было бы эффективно применять многопоточность.