Камерон Хьюз - Параллельное и распределенное программирование на С++
- Название:Параллельное и распределенное программирование на С++
- Автор:
- Жанр:
- Издательство:Издательский дом «Вильямс»
- Год:2004
- Город:МоскваСанкт-ПетербургКиев
- ISBN:ISBN 5-8459-0686-5 (рус.)ISBN 0-13-101376-9 (англ.)
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Камерон Хьюз - Параллельное и распределенное программирование на С++ краткое содержание
Эта книга адресована программистам, проектировщикам и разработчикам программных продуктов, а также научным работникам, преподавателям и студентам, которых интересует введение в параллельное и распределенное программирование с использованием языка С++.
Параллельное и распределенное программирование на С++ - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Возвращаемые значения
При успешно м завершении функции pthread_setcancelstate() и pthread_ setcanceltype () возвра щ ают нулевое значение; в противно м случае возвра щ ается ко д ошибки, обозначаю щ ий ее характер.
Ошибки
Функция 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, .
Последовательность внесения изменений
Функции впервые реализованы в выпуске Issue 5. Включены для согласования с расширение м POSIX Threads Extension.
Issue 6
Функции pthread_setcancelstate (), pthread_setcanceltype () и pthread_ testcancel () от м ечены как часть опции Threads.
pthread_setschedprio
Имя
pthread_setschedprio — функция д ина м ического д оступа к пара м етра м планирования потока (REALTIME THREADS).
Синопсис
THRTPS #include
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, .
Последовательность внесения изменений
Функция впервые реализована в выпуске 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.
Читать дальшеИнтервал:
Закладка: