Энтони Уильямс - Параллельное программирование на С++ в действии. Практика разработки многопоточных программ
- Название:Параллельное программирование на С++ в действии. Практика разработки многопоточных программ
- Автор:
- Жанр:
- Издательство:ДМК Пресс
- Год:2012
- Город:Москва
- ISBN:978-5-94074-448-1
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Энтони Уильямс - Параллельное программирование на С++ в действии. Практика разработки многопоточных программ краткое содержание
Книга «Параллельное программирование на С++ в действии» не предполагает предварительных знаний в этой области. Вдумчиво читая ее, вы научитесь писать надежные и элегантные многопоточные программы на С++11. Вы узнаете о том, что такое потоковая модель памяти, и о том, какие средства поддержки многопоточности, в том числе запуска и синхронизации потоков, имеются в стандартной библиотеке. Попутно вы познакомитесь с различными нетривиальными проблемами программирования в условиях параллелизма.
Параллельное программирование на С++ в действии. Практика разработки многопоточных программ - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
typedef std::chrono::time_point time_point;
STD::CHRONO::SYSTEM_CLOCK::NOW
, СТАТИЧЕСКАЯ ФУНКЦИЯ-ЧЛЕН
Получает текущее время от системных часов реального времени.
Объявление
time_point now() noexcept;
Возвращаемое значение
Экземпляр time_point
, представляющий текущее время по системным часам реального времени.
Исключения
Возбуждает исключение std::system_error
в случае ошибки.
STD::CHRONO::SYSTEM_CLOCK::TO_TIME_T
, СТАТИЧЕСКАЯ ФУНКЦИЯ-ЧЛЕН
Преобразует объект типа time_point
в объект типа time_t
.
Объявление
time_t to_time_t(time_point const& t) noexcept;
Возвращаемое значение
Экземпляр time_t
, представляющий тот же момент времени, что и t
, округленный или обрезанный до секунд.
Исключения
Возбуждает исключение std::system_error
в случае ошибки.
STD::CHRONO::SYSТЕМ_CLOCK::FROM_TIME_T
, СТАТИЧЕСКАЯ ФУНКЦИЯ-ЧЛЕН
Преобразует объект типа time_t
в объект типа time_point
.
Объявление
time_point from_time_t(time_t const& t) noexcept;
Возвращаемое значение
Экземпляр time_point
, представляющий тот же момент времени, что и t
.
Исключения
Возбуждает исключение std::system_error
в случае ошибки.
D.1.4. Класс std::chrono::steady_clock
Класс std::chrono::steady_clock
предоставляет доступ к системным стабильным часам. Текущее время возвращает функция std::chrono::steady_clock::now()
. He существует фиксированного соотношения между значениями, возвращаемыми std::chrono::steady_clock::now()
и показаниями часов реального времени. Стабильные часы не могут «идти в обратную сторону», поэтому если некое обращение к функции std::chrono::steady_clock::now()
происходит-раньше другого обращения к ней же, то второе обращение должно вернуть момент времени, больший или равным первому. Часы ходят с частотой, настолько близкой к постоянной, насколько это возможно.
Определение класса
class steady_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 = true;
static time_point now() noexcept;
};
STD::CHRONO::STEADY_CLOCK::REP
, TYPEDEF
Псевдоним целочисленного типа, используемого для хранения количества тиков в интервале duration
.
Объявление
typedef unspecified-integral-type rep;
STD::CHRONO::STEADY_CLOCK::PERIOD
, TYPEDEF
Псевдоним типа для конкретизации шаблонного класса std::ratio
, которая определяет наименьшее число секунд (или долей секунды) между различающимися значениями duration
или time_point
. Псевдоним period
определяет точность часов, а не частоту тактов.
Объявление
typedef std::ratio< unspecified , unspecified > period;
STD::CHRONO::STEADY_CLOCK::DURATION
, TYPEDEF
Конкретизация шаблонного класса std::chrono::duration
, в которой может храниться разность между любыми двумя моментами времени, полученными от системных стабильных часов.
Объявление
typedef std::chrono::duration<
std::chrono::steady_clock::rep,
std::chrono::steady_clock::period> duration;
STD::CHRONO::STEADY_CLOCK::TIME_POINT
, TYPEDEF
Конкретизация шаблонного класса std::chrono::time_point
, в которой могут храниться моменты времени, полученные от системных стабильных часов.
Объявление
typedef std::chrono::time_point
time_point;
STD::CHRONO::STEADY_CLOCK::NOW
, СТАТИЧЕСКАЯ ФУНКЦИЯ-ЧЛЕН
Получает текущее время от системных стабильных часов.
Объявление
time_point now() noexcept;
Возвращаемое значение
Экземпляр time_point
, представляющий текущее время но системным стабильным часам.
Исключения
Возбуждает исключение std::system_error
в случае ошибки.
Синхронизация
Если одно обращение к std::chrono::steady_clock::now()
происходит-раньше другого, то момент времени time_point
, возвращенный при первом обращении, меньше или равен моменту времени time_point
, возвращенному при втором обращении.
D.1.5. Псевдоним типа std::chrono::high_resolution_clock
Класс std::chrono::high_resolution_clock
предоставляет доступ к системным часам максимально высокого разрешения. Как и для всех остальных часов, текущее время можно получить от функции std::chrono::high_resolution_clock::now()
. Имя std::chrono::high_resolution_clock
может быть псевдонимом класса std::chrono::system_clock
или класса std::chrono::steady_clock
, либо отдельным типом.
Хотя тип std::chrono::high_resolution_clock
дает самое высокое разрешение среди всех входящих в библиотеку часов, обращение к функции std::chrono::high_resolution_clock::now()
все же занимает конечное время. Поэтому, пытаясь хронометрировать очень короткие операции, учитывайте накладные расходы на вызов этой функции.
Определение класса
class high_resolution_clock {
public:
typedef unspecified-integral-type rep;
typedef std::ratio<
unspecified , unspecified > period;
typedef std::chrono::duration duration;
typedef std::chrono::time_point<
unspecified > time_point;
static const bool is_steady = unspecified ;
static time_point now() noexcept;
};
D.2. Заголовок
Заголовок предоставляет доступ к условным переменным. Это базовый механизм синхронизации, который позволяет блокировать поток до получения уведомления о том, что выполнено некоторое условие или истек таймаут.
Содержимое заголовка
namespace std {
enum class cv_status { timeout, no_timeout };
class condition_variable;
class condition_variable_any;
}
D.2.1. Класс std::condition_variable
Класс std::condition_variable
позволяет потоку ждать выполнения условия.
Экземпляры этого класса не удовлетворяют концепциям CopyAssignable
, CopyConstructible
, MoveAssignable
, MoveConstructible
.
Определение класса
class condition_variable {
public:
condition_variable();
~condition_variable();
condition_variable(condition_variable const&) = delete;
condition_variable& operator=(
condition_variable const&) = delete;
void notify_one() noexcept;
void notify_all() noexcept;
void wait(std::unique_lock& lock);
template
void wait(std::unique_lock& lock, Predicate pred);
template
cv_status wait_until(
std::unique_lock& lock,
const std::chrono::time_point& absolute_time);
template
bool wait_until(
std::unique_lock& lock,
const std::chrono::time_point& absolute_time,
Predicate pred);
template
cv_status wait_for(
std::unique_lock& lock,
const std::chrono::duration& relative_time);
template
bool wait_for(
std::unique_lock& lock,
const std::chrono::duration& relative_time,
Predicate pred);
};
void notify_all_at_thread_exit(
condition_variable&, unique_lock);
STD::CONDITION_VARIABLE
, КОНСТРУКТОР ПО УМОЛЧАНИЮ
Интервал:
Закладка: