Энтони Уильямс - Параллельное программирование на С++ в действии. Практика разработки многопоточных программ
- Название:Параллельное программирование на С++ в действии. Практика разработки многопоточных программ
- Автор:
- Жанр:
- Издательство:ДМК Пресс
- Год:2012
- Город:Москва
- ISBN:978-5-94074-448-1
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Энтони Уильямс - Параллельное программирование на С++ в действии. Практика разработки многопоточных программ краткое содержание
Книга «Параллельное программирование на С++ в действии» не предполагает предварительных знаний в этой области. Вдумчиво читая ее, вы научитесь писать надежные и элегантные многопоточные программы на С++11. Вы узнаете о том, что такое потоковая модель памяти, и о том, какие средства поддержки многопоточности, в том числе запуска и синхронизации потоков, имеются в стандартной библиотеке. Попутно вы познакомитесь с различными нетривиальными проблемами программирования в условиях параллелизма.
Параллельное программирование на С++ в действии. Практика разработки многопоточных программ - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Возвращаемое значение
Значение d, преобразованное к типу интервала, заданного параметром ToDuration. При выполнении операции минимизируется потеря точности в результате преобразования интервалов с разными масштабами и типами представления.
D.1.2. Шаблон класса std::chrono::time_point
Шаблон класса std::chrono::time_pointпредставляет момент времени, измеренный по конкретным часам. Задается в виде интервала, прошедшего с момента эпохи данных часов. Параметр шаблона Clockзадает часы (у разных часов должны быть разные типы), а параметр Duration— тип для измерения интервала от эпохи, который должен быть конкретизацией шаблона std::chrono::duration. По умолчанию Durationсовпадает с подразумеваемым типом интервала, определенным в Clock.
Определение класса
template
class time_point {
public:
typedef Clock clock;
typedef Duration duration;
typedef typename duration::rep rep;
typedef typename duration::period period;
time_point();
explicit time_point(const duration& d);
template
time_point(const time_point& t);
duration time_since_epoch() const;
time_point& operator+=(const duration& d);
time_point& operator-=(const duration& d);
static constexpr time_point min();
static constexpr time_point max();
};
STD::CHRONO::TIME_POINT , КОНСТРУКТОР ПО УМОЛЧАНИЮ
Конструирует объект time_point, представляющий эпоху часов Clock; внутренний интервал инициализируется значением Duration::zero().
Объявление
time_point();
Постусловие
Для сконструированного по умолчанию объекта tpтипа time_pointимеет место равенство tp.time_since_epoch() == tp::duration::zero().
STD::CHRONO::TIME_POINT , КОНСТРУКТОР ИЗ ИНТЕРВАЛА
Конструирует объект time_point, представляющий заданный интервал от эпохи часов Clock.
Объявление
explicit time_point(const duration& d);
Постусловие
Для объекта tpтипа time_point, созданного конструктором tp(d)из некоторого интервала d, имеет место равенство tp.time_since_epoch() == d.
STD::CHRONO::TIME_POINT , КОНВЕРТИРУЮЩИЙ КОНСТРУКТОР
Конструирует объект time_pointиз другого объекта time_pointс таким же типом Clock, по другим типом Duration.
Объявление
template
time_point(const time_point& t);
Требования
Для типа Duration2должно существовать неявное преобразование в тип Duration.
Результат
Эквивалентно выражению time_point(t.time_since_epoch()).
Значение, возвращенное функцией t.time_since_epoch()неявно преобразуется в объект типа Duration, который сохраняется в новом объекте типа time_point.
STD::CHRONO::TIME_POINT::TIME_SINCE_EPOCH , ФУНКЦИЯ-ЧЛЕН
Возвращает интервал от эпохи часов для данного объекта типа time_point.
Объявление
duration time_since_epoch() const;
Возвращаемое значение
Значение duration, хранящееся в *this.
STD::CHRONO::TIME_POINT::OPERATOR+= , СОСТАВНОЙ ОПЕРАТОР ПРИСВАИВАНИЯ
Прибавляет указанный интервал durationк значению, хранящемуся в данном объекте time_point.
Объявление
time_point& operator+=(const duration& d);
Результат
Прибавляет dк внутреннему интервалу *this, эквивалентно this->internal_duration += d.
Возвращаемое значение
*this
STD::CHRONO::TIME_POINT::OPERATOR-= , СОСТАВНОЙ ОПЕРАТОР ПРИСВАИВАНИЯ
Вычитает указанный интерфейс durationиз значения, хранящегося в данном объекте time_point.
Объявление
time_point& operator-=(const duration& d);
Результат
Вычитает dиз внутреннего интервала *this, эквивалентно this->internal_duration -= d.
Возвращаемое значение
*this
STD::CHRONO::TIME_POINT::MIN , СТАТИЧЕСКАЯ ФУНКЦИЯ-ЧЛЕН
Получает объект time_point, представляющий минимально возможное для данного типа значение.
Объявление
static constexpr time_point min();
Возвращаемое значение
time_point(time_point::duration::min())(см. 11.1.1.15)
STD::CHRONO::TIME_POINT::MAX, СТАТИЧЕСКАЯ ФУНКЦИЯ-ЧЛЕН
Получает объект time_point, представляющий максимально возможное для данного типа значение.
Объявление
static constexpr time_point max();
Возвращаемое значение
time_point(time_point::duration::max())(см. 11.1.1.16)
D.1.3. Класс std::chrono::system_clock
Класс std::chrono::system_clockпредоставляет средства для получения времени от системных часов реального времени. Текущее время возвращает функция std::chrono::system_clock::now(). Объекты класса std::chrono::system_clock::time_pointможно преобразовывать в тип time_tс помощью функции std::chrono::system_clock::to_time_t()и получать из этого типа с помощью функции std::chrono::system_clock::to_time_point(). Системные часы не стабильны , поэтому последующее обращение к std::chrono::system_clock::now()может вернуть момент времени, более ранний, чем при предыдущем обращении (например, если часы операционной системы были подведены вручную или автоматически синхронизировались с внешним источником времени).
Определение класса
class system_clock {
public:
typedef unspecified-integral-type rep;
typedef std::ratio< unspecified , unspecified > period;
typedef std::chrono::duration duration;
typedef std::chrono::time_point time_point;
static const bool is_steady = unspecified ;
static time_point now() noexcept;
static time_t to_time_t(const time_point& t) noexcept;
static time_point from_time_t(time_t t) noexcept;
};
STD::CHRONO::SYSTEM_CLOCK::REP , TYPEDEF
Псевдоним целочисленного типа, используемого для хранения количества тиков в интервале duration.
Объявление
typedef unspecified-integral-type rep;
STD::CHRONO::SYSTEM_CLOCK::PERIOD , TYPEDEF
Псевдоним типа для конкретизации шаблонного класса std::ratio, которая определяет наименьшее число секунд (или долей секунды) между различающимися значениями durationили time_point. Псевдоним periodопределяет точность часов, а не частоту тактов.
Объявление
typedef std::ratio< unspecified , unspecified > period;
STD::CHRONO::SYSTEM_CLOCK::DURATION , TYPEDEF
Конкретизация шаблонного класса std::chrono::duration, в которой может храниться разность между любыми двумя моментами времени, полученными от системных часов реального времени.
Объявление
typedef std::chrono::duration<
std::chrono::system_clock::rep,
std::chrono::system_clock::period> duration;
STD::CHRONO::SYSTEM_CLOCK::TIME_POINT , TYPEDEF
Конкретизация шаблонного класса std::chrono::time_point, в которой могут храниться моменты времени, полученные от системных часов реального времени.
Объявление
Читать дальшеИнтервал:
Закладка: