Энтони Уильямс - Параллельное программирование на С++ в действии. Практика разработки многопоточных программ
- Название:Параллельное программирование на С++ в действии. Практика разработки многопоточных программ
- Автор:
- Жанр:
- Издательство:ДМК Пресс
- Год: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не ассоциирован никакой поток выполнения.
Интервал:
Закладка: