ГЛАВА 8 Синхронизация потоков

ГЛАВА 8

Синхронизация потоков

Потоки могут упрощать проектирование и реализацию программ и повышать их производительность, но их использование требует принятия мер по защите разделяемых ресурсов от попыток их изменения одновременно несколькими потоками, а также создания таких условий, при которых потоки выполняются лишь в ответ на запрос или тогда, когда это является необходимым. В настоящей главе представлены способы решения этих задач с помощью объектов синхронизации Windows — критических участков кода, мьютексов, семафоров и событий, а также описаны некоторые из проблем, например, взаимоблокировка потоков и возникновение состязаний между ними, которые могут наблюдаться в результате неправильного использования потоков. Объекты синхронизации могут применяться для синхронизации потоков, принадлежащих как одному и тому же, так и различным процессам.

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

Синхронизация потоков является одной из важнейших и интереснейших тем и играет существенную роль почти в любом многопоточном приложении. Тем не менее, те из читателей, которые заинтересованы главным образом в межпроцессном взаимодействии, сетевом программировании и построении серверов с многопоточной поддержкой, могут перейти непосредственно к главе 11 и вернуться к изучению глав 8-10 в качестве вспомогательного материала, лишь в том случае, если в этом возникнет необходимость.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

1 Синхронизация данных 

Из книги Удаленная работа на компьютере: как работать из дома комфортно и эффективно автора Клименко Роман Александрович

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


ЧАСТЬ 3 СИНХРОНИЗАЦИЯ

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

ЧАСТЬ 3 СИНХРОНИЗАЦИЯ


А.5. Синхронизация потоков: программы

Из книги Системное программирование в среде Windows автора Харт Джонсон М

А.5. Синхронизация потоков: программы Для измерения времени, уходящего на синхронизацию при использовании различных средств, мы создаем некоторое количество потоков (от одного до пяти, согласно табл. А.4 и А.5), каждый из которых увеличивает счетчик в разделяемой памяти


Синхронизация куч

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

Синхронизация куч В NT для синхронизации доступа к кучам (глава 5) предусмотрены две функции — HeapLock и HeapUnlock. В каждой из этих функций единственным аргументом является дескриптор. Эти функции удобно применять в тех случаях, когда используется флаг HEAP_NO_SERIALIZE, или когда


ГЛАВА 10 Усовершенствованные методы синхронизации потоков

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

ГЛАВА 10 Усовершенствованные методы синхронизации потоков В предыдущей главе были описаны проблемы производительности, возникающие в Windows, и способы их преодоления в реалистичных ситуациях. В главе 8 обсуждался ряд простых задач, требующих привлечения объектов


Стеки потоков и допустимые количества потоков

Из книги Linux автора Стахнов Алексей Александрович

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


13.2. Синхронизация потоков

Из книги Компьютерная обработка звука автора Загуменнов Александр Петрович

13.2. Синхронизация потоков Почему необходима синхронизация? Потому что из-за «чередования» операций доступ к переменным и другим сущностям может осуществляться в порядке, который не удается установить путем чтения исходного текста отдельных потоков. Два и более потоков,


11.2.7. Синхронизация файлов

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

11.2.7. Синхронизация файлов Когда программа пишет данные в файл, обычно они сохраняются в кэше ядра до тех пор, пока оно не выполнит запись на физический носитель (такой как жесткий диск), но ядро возвращает управление программе сразу после того, как данные скопируются в кэш.


Глава 23 Синхронизация времени через сеть, настройка временной зоны

Из книги Секреты приложений Google автора Балуев Денис

Глава 23 Синхронизация времени через сеть, настройка временной зоны Для комфортной работы с компьютером иногда может не хватать такой малости, как нормально настроенное системное время. Плохо, когда приходится ежедневно его подправлять или вручную производить переход


Синхронизация

Из книги Разработка ядра Linux автора Лав Роберт

Синхронизация При совместном использовании нескольких различных устройств важно обеспечить их полную синхронизацию. Работа всего оборудования должна опираться на одинаковую информацию о времени, а обслуживающие программы – уметь работать с разнообразными типами


4.4. Синхронизация потоков и критические секции

Из книги Ноутбук [секреты эффективного использования] автора Пташинский Владимир

4.4. Синхронизация потоков и критические секции Программирование потоков — нетривиальная задача, ведь большинство потоков выполняется одновременно. К примеру, невозможно определить, когда система предоставит доступ к процессору одному потоку, а когда — другому.


Синхронизация

Из книги QT 4: программирование GUI на С++ автора Бланшет Жасмин

Синхронизация Иногда очень сложно отказаться от работы со старыми программами. По разным причинам – многие «прикипели» к интерфейсу любимого электронного календаря, где-то та или иная программа является корпоративным стандартом… Но это совсем не значит, что от


Синхронизация

Из книги автора

Синхронизация Для того чтобы фотографии любого вашего альбома прямо из Picasa появились в Интернете на сервисе Picasa Web Albums, необходимо совершить всего два простых действия. Во-первых, щелкнуть на ссылке «Веб-альбомы» над строкой поиска и ввести данные своей учетной записи


Синхронизация и параллелизм

Из книги автора

Синхронизация и параллелизм Ядро подвержено состояниям конкуренции за ресурсы (race condition). В отличие от однопоточной пользовательской программы, ряд свойств ядра позволяет осуществлять параллельные обращения к ресурсам общего доступа, и поэтому требуется выполнять


Глава 13 Синхронизация данных

Из книги автора

Глава 13 Синхронизация данных • VuBrief• SmartSync ProАктивные пользователи – а к таковым относится большинство владельцев ноутбуков – вынуждены работать более чем с одним компьютером. Нередко даже в одной семье есть несколько компьютеров. Перед многими пользователями также


Синхронизация потоков

Из книги автора

Синхронизация потоков Обычным требованием для многопоточных приложений является синхронизация работы нескольких потоков. Для этого в Qt предусмотрены следующие классы: QMutex, QReadWriteLock, QSemaphore и QWaitCondition.Класс QMutex обеспечивает такую защиту переменной или участка