Параллельное и распределенное программирование на С++ - Хьюз Камерон
Ошибки
Функция pthread_setcancelstate () м ожет завершиться неу д ачно, если:
[EINVAL] за д анный пара м етр state не со д ержит ни значения PTHREAD_ CANCEL_ENABLE , низначения PTHREAD_CANCEL_DI SABLE.
Функция pthread_setcanceltype () м ожет завершиться неу д ачно, если:
[EINVAL] за д анный пара м етр type не со д ержит ни значения PTHREAD_ CANCEL_DEFERRED, ни значения PTHREAD_CANCEL_ASYNCHRONOUS.
Эти функции не возвра щ ают ко д ошибки [EINTR].
Примеры
Отсутствуют.
Замечания по использованию
Отсутствуют.
Логическое обоснование
Функции pthread_setcancelstate () и pthread_setcanceltype () позволяют управлять точка м и, в которых поток можно асинхронно отменить. Для того чтобы управление отменой потоков можно было осуществлять в соответствии с модульными принципами, необходимо следовать следующим правилам.
Объект можно рассматривать как обобщение некоторой процедуры. Вернее, он представляет собой множество процедур и глобальных переменных, организованных в виде одного модуля, вызываемого клиентами, не известными для этого объекта, причем одни объекты могут зависеть от других.
Во-первых, на входе в объект возможность отмены должна быть запрещена (никогда явно не разрешена). На выходе из объекта состояние отмены должно быть всегда восстановлено до значения, которое оно имело на входе в этот объект.
Это следует из принципа модульности: если клиент объекта (или клиент объекта, использующего данный объект) запретил возможность отмены, это означает, что клиент не желает проведения очистительно-восстановительных операций в случае, если поток будет отменен во время выполнения некоторой важной последовательности действий. Если объект вызывается в таком состоянии и предоставляет возможность отмены, а запрос на отмену задерживается для этого потока, то такой поток отменяется вопреки желанию клиента (т.е. вопреки запрету на отмену).
Во-вторых, на входе в объект тип отмены можно установить явным образом (равным либо «отложенному», либо «асинхронному» значению). Но, как и для состояния отмены, на выходе из объекта тип отмены должен быть всегда восстановлен до значения, которое он имел на входе в этот объект.
Наконец, из потока, который позволяет асинхронную от м ену, м ожно вызывать только безопасные (с точки зрения от м ены) функции.
Будущие направления
Отсутствуют.
Смотри также
pthread_cancel(), то м Base Definitions стандарта IEEE Std 1003.1-2001, <pthread.h>.
Последовательность внесения изменений
Функции впервые реализованы в выпуске Issue 5. Включены для согласования с расширение м POSIX Threads Extension.
Issue 6
Функции pthread_setcancelstate (), pthread_setcanceltype () и pthread_ testcancel () от м ечены как часть опции Threads.
pthread_setschedprio
Имя
pthread_setschedprio — функция д ина м ического д оступа к пара м етра м планирования потока (REALTIME THREADS).
Синопсис
THRTPS #include <pthread.h>
int pthread_setschedprio(pthread_t thread, int prio);
Описание
Функция pthread_setschedprio () используется д ля установки приоритета планирования равны м значению, заданно м у пара м етро м prio, для потока, идентификационный но м ер (ID) которого задан пара м етро м thread.
В случае неудачного завершения функции pthread_setschedprio () приоритет планирования заданного потока останется без из м енения.
Возвращаемое значение
При успешно м завершении функция pthread_setschedprio () возвра щ ает нулевое значение; в противно м случае возвра щ ается код ошибки, обозначаю щ ий ее характер.
Ошибки
Функция pthread_setschedprio () м ожет завершиться неудачно, если:
[EINVAL] значение пара м етра prio не действительно для стратегии планирования заданного потока;
[ENOTSUP] была сделана попытка установить приоритет равны м значению, которое не поддерживается;
[EPERM] инициатор вызова не и м еет соответствую щ его разрешения на установку пара м етров стратегии планирования за д анного потока;
[EPERM] реализация не позволяет приложению м о д ифицировать приоритет, устанавливая его равны м за д анно м у значению;
[ESRCH] значение, за д анное пара м етро м thread, не относится к су щ ествую щ е м у потоку.
Функция pthread_setschedprio () не возвра щ ает ко д ошибки [EINTR].
Примеры
Отсутствуют.
Замечания по использованию
Отсутствуют.
Логическое обоснование
Функция pthread_setschedprio() обеспечивает для приложения воз м ожность вре м енно г о увеличения приоритета с последую щ и м ero понижение м без нежелательного побочного эффекта, выражае м ого в установке други м и потока м и такого же приоритета. Это нужно, если приложение должно реализовать такие собственные стратегии для ограничения инверсии приоритетов, как наследование приоритетов или использование предельных значений приоритетов. Эта воз м ожность особенно важна, если реализация не по д держивает опции Thread Priority Protection или Thread Priority Inheritance, но даже в случае их по д держки эту воз м ожность необходи м о использовать, если приложение обязано привязывать наследование приоритетов к использованию таких ресурсов, как се м афоры.
Нес м отря на то что, воз м ожно, предпочтительнее было бы решить эту пробле м у, м одифицируя спецификацию функции pthread_setschedparam(), было слишко м поздно вносить такое из м енение, поскольку уже су щ ествовали реализации, которые пришлось бы в это м случае из м енять. Поэто м у даннал функция и была введена.
Будущие направления
Отсутствуют.
Смотри также
pthread_getschedparam(), то м Base Definitions стандарта IEEE Std 1003.1-2001, <pthread. h>.
Последовательность внесения изменений
Функция впервые реализована в выпуске Issue 6. Включена в качестве реакции на интерпретацию IEEE PASC Interpretation 1003.1 #96.
СПИСОК ЛИТЕРАТУРЫ
1. Audi, Robert. Action, Intention, andReason. Ithaca, N. Y.: Cornell University Press, 1993.
2. Axford, Tom. Concurrent Programming: Fundamental Techniques for Real-Time and ParalMSoftwareDesign, Chichester, U. K.:JohnWiley, 1989.
3. Baase, Sarah. ComputerAlgorithms: Introduction to Design andAnalysis. 2nd ed. Reading, Mass.:Addison-Wesley, 1988.
4. Barfield, Woodrow, and Thomas A. Furnell III. Virtual Environments and Advanced InterfaceDesign. New York: Oxford University Press, 1995.
5. Binkley, Robert, Bronaugh, Richard, and Ausonio Marras. Agent, Action, andReason. Toronto: UniversityofToronto Press, 1971.
6. Booch, Grady, James Rumbaugh, and IvarJacobson. The Unified Modeling Language UserGuide. Boston: Addison-Wesley, 1999.
7. Bowan, Howard, andJohn Derrick. FormalMethods forDistributedProcessing: A Survey of Object-OrientedApproaches. NewYork: Cambridge University Press, 2001.
8. Brewka, Gerhard,Jurgen Diz, and Kurt Konolige. Nonmonotonic Reasoning. Stanford, Calif.: CSLI Publications, 1997.
9. Carroll, Martin D., and Margaret A. Ellis. Designing and CodingReusabh C++. Reading, Mass.: Addison-Wesley, 1995.
Откройте для себя мир чтения на siteknig.com - месте, где каждая книга оживает прямо в браузере. Здесь вас уже ждёт произведение Параллельное и распределенное программирование на С++ - Хьюз Камерон, относящееся к жанру Прочая околокомпьютерная литература. Никаких регистраций, никаких преград - только вы и история, доступная в полном формате. Наш литературный портал создан для тех, кто любит комфорт: хотите читать с телефона - пожалуйста; предпочитаете ноутбук - идеально! Все книги открываются моментально и представлены полностью, без сокращений и скрытых страниц. Каталог жанров поможет вам быстро найти что-то по настроению: увлекательный роман, динамичное фэнтези, глубокую классику или лёгкое чтение перед сном. Мы ежедневно расширяем библиотеку, добавляя новые произведения, чтобы вам всегда было что открыть "на потом". Сегодня на siteknig.com доступно более 200000 книг - и каждая готова стать вашей новой любимой. Просто выбирайте, открывайте и наслаждайтесь чтением там, где вам удобно.


