ПРИЛОЖЕНИЕ Б Основы многопоточного программирования
ПРИЛОЖЕНИЕ Б
Основы многопоточного программирования
Б.1. Введение
В этом приложении приведены основные функции, используемые для работы с потоками. В традиционной модели Unix процесс, которому нужно, чтобы какое-то действие было выполнено не им самим, порождает дочерний процесс вызовом fork. Большая часть сетевых серверов под Unix написана именно так.
Хотя эта парадигма хорошо работала на протяжении многих лет, вызов fork обладает некоторыми недостатками:
? вызов fork ресурсоемок. Память копируется от родительского процесса к дочернему, копируются все дескрипторы и т. д. Существующие реализации используют метод копирования при записи (copy-on-write), что исключает необходимость копирования адресного пространства родительского процесса, пока оно не понадобится клиенту, но, несмотря на эту оптимизацию, вызов fork остается ресурсоемким;
? для передачи информации между родительским и дочерним процессами необходимо использовать одну из форм IPC после вызова fork. Передать информацию дочернему процессу легко: это можно сделать до вызова fork. Однако передать ее обратно может быть достаточно сложно.
Потоки помогают решить обе проблемы. Часто они называются «облегченными процессами» (lightweight processes), поскольку поток проще, чем процесс. Создание потока может занимать по времени меньше одной десятой создания процесса.
Все потоки одного процесса совместно используют его глобальные переменные, поэтому им легко обмениваться информацией, но это приводит к необходимости синхронизации. Однако общими становятся не только глобальные переменные. Все потоки одного процесса разделяют:
? инструкции процесса;
? большую часть данных;
? открытые файлы (дескрипторы);
? обработчики сигналов и вообще настройки для работы с сигналами;
? текущий рабочий каталог;
? идентификатор пользователя и группы.
Однако каждый поток имеет свои собственный:
? идентификатор потока;
? набор регистров, включая PC и указатель стека;
? стек (для локальных переменных и адресов возврата);
? errno;
? маску сигналов;
? приоритет.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Глава 2. Основы веб-программирования с помощью языка HTML
Глава 2. Основы веб-программирования с помощью языка HTML Аббревиатура HTML знакома даже людям, которые по роду занятий далеки от веб-разработки. Она получила известность хотя бы потому, что адреса многих веб-страниц в Интернете заканчиваются расширением
Основы программирования на Java
Основы программирования на Java учебное пособиеУльяновск: УлГТУ2006 ВВЕДЕНИЕ Java - это язык программирования для Internet. Java - это язык для создания безопасных, переносимых, надежных, объектно-ориентированных интерактивных программ с параллельно выполняющимися
Приложение А. Чем Школа Программирования может быть полезна лично Вам
Приложение А. Чем Школа Программирования может быть полезна лично Вам Что ж, если Вы дочитали эту книгу почти до конца, то, наверное, со многим описанным Вы можете согласиться. Впрочем, нет необходимости соглашаться абсолютно со всем. У каждого из нас уникальный опыт,
Глава 3. Основы программирования на VBA.
Глава 3. Основы программирования на VBA. В этой главе ...~ Запуск редактора Visual Basic~ Использование справочной системы VBA~ Программирование в VBA - краткое и нестрогое руководствоМакросы хороши до определенных пределов, но гораздо больше можно получить от полноценных
Приложение: Объектно-ориентированные языки программирования
Приложение: Объектно-ориентированные языки программирования Использование объектно-ориентированной методологии не ограничено каким-либо одним языком программирования - она применима к широкому спектру объектных и объектно-ориентированных языков. Наряду с анализом и
1.5.2. Перспективы программирования
1.5.2. Перспективы программирования Наверное, каждый, кто знает Ruby (сегодня), в прошлом изучал или пользовался другими языками. Это, с одной стороны, облегчает изучение Ruby, так как многие средства похожи на аналогичные средства в других языках. С другой стороны, у
18.1.2. Реализация многопоточного сервера
18.1.2. Реализация многопоточного сервера Некоторые серверы должны обслуживать очень интенсивный поток запросов. В таком случае эффективнее обрабатывать каждый запрос в отдельном потоке.Ниже показана реализация сервера текущего времени, с которым мы познакомились в
2. Лекция: Основы объектно-ориентированного программирования
2. Лекция: Основы объектно-ориентированного программирования В этой лекции излагается основная концепция объектно-ориентированного подхода (ООП) к проектированию программного обеспечения. Поскольку в Java почти все типы (за исключением восьми простейших) являются
Приложение B Ресурсы программирования мобильных игр
Приложение B Ресурсы программирования мобильных игр Вероятно, самое важное в программировании мобильных игр – это постоянное обновление в соответствии с последними тенденциями и технологиями. К счастью, в сети Internet вы найдете большое количество ресурсов по
1. Основы программирования в системе X Window
1. Основы программирования в системе X Window X Window или просто X - это система для создания графического пользовательского интерфейса на компьютерах, работающих под управлением операционной системы UNIX. X была создана в Массачусетском Технологическом Институте (США). В
Основы shell–программирования
Основы shell–программирования В четвертой части мы приступим к написанию сценариев интерпретатора shell. Здесь приведены указания по созданию исполняемых файлов и по их выполнению в среде интерпретатора shell, а также продемонстрированы принципы применения в сценариях
Глава 18 Основы программирования во Flash
Глава 18 Основы программирования во Flash Вот мы и добрались до программирования. Путь был долог и тяжел, но мы его преодолели, расправившись по дороге со статичной и анимированной графикой, импортированным видео и звуком. Перед нами высятся неприступные стены и грозные
Приложение В Функции программирования Flash в AMIBIOS
Приложение В Функции программирования Flash в AMIBIOS За программирование Flash в AMIBIOS отвечает функция E0h прерывания INT 16h. При вызове прерывания INT 16h номер функции должен находиться в регистре AH, номер подфункции – в регистре AL. При возврате из функции регистр AL содержит FAh как