Энтони Уильямс - Параллельное программирование на С++ в действии. Практика разработки многопоточных программ
- Название:Параллельное программирование на С++ в действии. Практика разработки многопоточных программ
- Автор:
- Жанр:
- Издательство:ДМК Пресс
- Год:2012
- Город:Москва
- ISBN:978-5-94074-448-1
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Энтони Уильямс - Параллельное программирование на С++ в действии. Практика разработки многопоточных программ краткое содержание
Книга «Параллельное программирование на С++ в действии» не предполагает предварительных знаний в этой области. Вдумчиво читая ее, вы научитесь писать надежные и элегантные многопоточные программы на С++11. Вы узнаете о том, что такое потоковая модель памяти, и о том, какие средства поддержки многопоточности, в том числе запуска и синхронизации потоков, имеются в стандартной библиотеке. Попутно вы познакомитесь с различными нетривиальными проблемами программирования в условиях параллелизма.
Параллельное программирование на С++ в действии. Практика разработки многопоточных программ - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Исключения
Нет.
Примечание. Особое значение не поток , которое хранится в сконструированном по умолчанию экземпляре std::thread::id
, меньше любого другого экземпляра std::thread::id
, представляющего поток выполнения. Если два экземпляра std::thread::id
равны, то ни один из них не меньше другого. Любое множество различных значений std::thread::id
полностью упорядочено, и этот порядок остается непротиворечивым на всем протяжении работы программы. Порядок может изменяться при разных прогонах одной и той же программы.
STD::THREAD::ID
, ОПЕРАТОР СРАВНЕНИЯ МЕНЬШЕ ИЛИ РАВНО
Сравнивает два экземпляра std::thread::id
, проверяя, предшествует ли один из них другому в смысле отношения полного порядка, существующего на множестве значений идентификаторов потоков, или оба экземпляра совпадают.
Объявление
bool operator<=(
std::thread::id lhs, std::thread::id rhs) noexcept;
Возвращаемое значение
!(rhs < lhs)
Исключения
Нет.
STD::THREAD::ID
, ОПЕРАТОР СРАВНЕНИЯ БОЛЬШЕ
Сравнивает два экземпляра std::thread::id
, проверяя, следует ли один из них за другим в смысле отношения полного порядка, существующего на множестве значений идентификаторов потоков.
Объявление
bool operator>(
std::thread::id lhs, std::thread::id rhs) noexcept;
Возвращаемое значение
rhs < lhs
Исключения
Нет.
STD::THREAD::ID
, ОПЕРАТОР СРАВНЕНИЯ БОЛЬШЕ ИЛИ РАВНО
Сравнивает два экземпляра std::thread::id
, проверяя, следует ли один из них за другим в смысле отношения полного порядка, существующего на множестве значений идентификаторов потоков, или оба экземпляра совпадают.
Объявление
bool operator>=(
std::thread::id lhs, std::thread::id rhs) noexcept;
Возвращаемое значение
!(lhs < rhs)
Исключения
Нет.
STD::THREAD::ID
, ОПЕРАТОР ВСТАВКИ В ПОТОК
Выводит строковое представление значения std::thread::id
в указанный поток.
Объявление
template
basic_ostream&
operator<<(basic_ostream&& out, thread::id id);
Результат
Выводит строковое представление значения std::thread::id
в указанный поток. Возвращаемое значение
out
Исключения
Нет.
Примечание. Формат строкового представления не специфицирован. Равные экземпляры имеют одинаковое представление, неравные — различное.
STD::THREAD::NATIVE_HANDLE_TYPE
, ПСЕВДОНИМ ТИПА
native_handle_type
— это псевдоним типа, который можно использовать в сочетании с платформенно-зависимыми API.
Объявление
typedef implementation-defined native_handle_type;
Примечание. Этот псевдоним типа необязателен. Если он определен, то реализация должна предоставить тип, пригодный для использования в сочетании с платформенно-зависимыми API.
STD::THREAD::NATIVE_HANDLE
, ФУНКЦИЯ-ЧЛЕН
Возвращает значение типа native_handle_type
, представляющее поток выполнения, ассоциированный с *this
.
Объявление
native_handle_type native_handle();
Примечание. Эта функция необязательна. Если она имеется, то возвращаемое значение должно быть пригодно для использования в сочетании с платформенно-зависимыми API.
STD::THREAD
, КОНСТРУКТОР ПО УМОЛЧАНИЮ
Конструирует объект std::thread
, с которым не ассоциирован никакой поток выполнения.
Объявление
thread() noexcept;
Результат
Конструирует экземпляр std::thread
, с которым не ассоциирован никакой поток выполнения.
Постусловия
Для вновь сконструированного объекта x типа std::thread x.get_id()==id()
.
Исключения
Нет.
STD::THREAD
, КОНСТРУКТОР
Конструирует экземпляр std::thread
, ассоциированный с новым потоком выполнения.
Объявление
template
explicit thread(Callable&& func, Args&&... args);
Предусловия
func
и каждый элемент списка args
должен удовлетворять требованиям концепции MoveConstructible
.
Результат
Конструирует экземпляр std::thread
и ассоциирует с ним вновь созданный потоком выполнения. Копирует или перемещает аргумент func
и все элементы списка args
во внутреннюю память, где они хранятся на протяжении всего времени жизни потока выполнения. Вызывает INVOKE(copy-of-func, copy-of-args)
в новом потоке выполнения.
Постусловия
Для вновь сконструированного объекта x
типа std::thread x.get_id() != id()
.
Исключения
Исключение типа std::system_error
, если не удалось запустить новый поток. Любое исключение, возбужденное при копировании func
или args
во внутреннюю память.
Синхронизация
Вызов этого конструктора происходит-раньше выполнения переданной функции во вновь созданном потоке выполнения.
STD::THREAD
, ПЕРЕМЕЩАЮЩИЙ КОНСТРУКТОР
Передает владение потоком выполнения от существующего объекта std::thread
вновь созданному.
Объявление
thread(thread&& other) noexcept;
Результат
Конструирует экземпляр std::thread
. Если с объектом other
перед вызовом конструктора был ассоциирован поток выполнения, то теперь этот поток оказывается ассоциирован с вновь созданным объектом std::thread
. В противном случае с вновь созданным объектом std::thread не ассоциирован никакой поток.
Постусловия
Для вновь сконструированного объекта x
типа std::thread x.get_id()
равно значению other.get_id()
до вызова конструктора, other.get_id() == id()
.
Исключения
Нет.
Примечание. Объекты std::thread
не удовлетворяют требованиям концепции CopyConstructible
, поэтому копирующего конструктора не существует, существует только этот перемещающий конструктор.
STD::THREAD
, ДЕСТРУКТОР
Уничтожает объект std::thread
.
Объявление
~thread();
Результат
Уничтожает *this
. Если с *this
ассоциирован поток выполнения ( this->joinable()
возвращает true
), то вызывает std::terminate()
, то есть аварийно завершает программу.
Исключения
Нет.
STD::THREAD
, ПЕРЕМЕЩАЮЩИЙ ОПЕРАТОР ПРИСВАИВАНИЯ
Передает владение потоком выполнения от одного объекта std::thread
другому.
Объявление
thread& operator=(thread&& other) noexcept;
Результат
Если до вызова этого оператора this->joinable()
возвращала true
, то вызывает std::terminate()
для аварийного завершения программы. Если с other
до вызова оператора был ассоциирован поток выполнения, то после вызова он оказывается ассоциирован с *this
. В противном случае с *this
не ассоциирован никакой поток выполнения.
Интервал:
Закладка: