Читаем Системное программирование в среде Windows полностью

Предупреждение

В массиве task_count намеренно использованы 32-битовые целые числа, чтобы увеличить верхний предел значений счетчика заданий и избежать создания предпосылок для возникновения "разрыва слов" ("word tearing") и "конфликтов строки кэша" ("cache line conflict") в SMP-системах. Два независимых процессора, на которых выполняются смежные рабочие потоки, могут одновременно изменять значения счетчиков смежных заданий путем внесения соответствующих изменений в свои кэши (32-битовые в системах на основе Intel x86). Вместе с тем, реально записываться в память будет только один кэш, что может сделать результаты недействительными. Чтобы избежать возможных рисков, следует позаботиться об отделении рабочих ячеек каждым из потоков друг от друга и их выравнивании в соответствии с размерами кэшей. В данном примере счетчик заданий может быть сгруппирован с аргументом потока, так что использованию 32-битовых счетчиков ничто не препятствует. Эта тема исследуется в упражнении 9.6. 

<p>Модельная программа для исследования факторов производительности</p>

На Web-сайте книги находится проект TimedMutualExclusion, который вы можете использовать для проведения собственных экспериментов с различными моделями "хозяин/рабочий" и характеристиками прикладных приложений. Ниже приводится перечень возможностей этой программы, которыми можно управлять из командной строки.

• Использование объектов CS или мьютексов.

• Глубина, или рекурсивность, счетчиков.

• Время удержания блокировки, или задержка (delay), которое моделирует объем работы, выполненной в пределах критического участка кода.

• Количество рабочих потоков, ограниченное системными ресурсами.

• Количество точек "засыпания" (sleep points), в которых рабочий поток уступает процессор, используя вызов Sleep(0), но продолжает владеть блокировкой. Точки "засыпания" моделируют ожидание рабочим потоком операций ввода/вывода или событий, тогда как задержка моделирует активность ЦП.

• Количество активных потоков, о чем говорится в разделе, посвященном дросселированию семафоров.

Регулируя параметры задержек и точек "засыпания", можно оказывать заметное воздействие на производительность, поскольку от этих параметров зависит доля времени, в течение которого поток владеет блокировкой, не давая выполняться другим потокам.

В листинг программы включены детальные комментарии, объясняющие порядок запуска программы и настройки параметров. В упражнении 9.1 вам предлагается провести самостоятельные эксперименты с использованием как можно большего количества различных систем, к которым у вас имеется доступ. Видоизмененный вариант этой программы под названием MutualExclusionSC поддерживает спин-счетчики, о которых говорится в следующем разделе.

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT