ПРИЛОЖЕНИЕ Б Основы многопоточного программирования

ПРИЛОЖЕНИЕ Б

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

Б.1. Введение

В этом приложении приведены основные функции, используемые для работы с потоками. В традиционной модели Unix процесс, которому нужно, чтобы какое-то действие было выполнено не им самим, порождает дочерний процесс вызовом fork. Большая часть сетевых серверов под Unix написана именно так.

Хотя эта парадигма хорошо работала на протяжении многих лет, вызов fork обладает некоторыми недостатками:

? вызов fork ресурсоемок. Память копируется от родительского процесса к дочернему, копируются все дескрипторы и т. д. Существующие реализации используют метод копирования при записи (copy-on-write), что исключает необходимость копирования адресного пространства родительского процесса, пока оно не понадобится клиенту, но, несмотря на эту оптимизацию, вызов fork остается ресурсоемким;

? для передачи информации между родительским и дочерним процессами необходимо использовать одну из форм IPC после вызова fork. Передать информацию дочернему процессу легко: это можно сделать до вызова fork. Однако передать ее обратно может быть достаточно сложно.

Потоки помогают решить обе проблемы. Часто они называются «облегченными процессами» (lightweight processes), поскольку поток проще, чем процесс. Создание потока может занимать по времени меньше одной десятой создания процесса.

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

? инструкции процесса;

? большую часть данных;

? открытые файлы (дескрипторы);

? обработчики сигналов и вообще настройки для работы с сигналами;

? текущий рабочий каталог;

? идентификатор пользователя и группы.

Однако каждый поток имеет свои собственный:

? идентификатор потока;

? набор регистров, включая PC и указатель стека;

? стек (для локальных переменных и адресов возврата);

? errno;

? маску сигналов;

? приоритет.

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

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

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

1. Основы программирования в системе X Window

Из книги Программирование в X Window средствами Free Pascal автора Полищук А П

1. Основы программирования в системе X Window X Window или просто X - это система для создания графического пользовательского интерфейса на компьютерах, работающих под управлением операционной системы UNIX. X была создана в Массачусетском Технологическом Институте (США). В


Приложение: Объектно-ориентированные языки программирования

Из книги Объектно-ориентированный анализ и проектирование с примерами приложений на С++ автора Буч Гради

Приложение: Объектно-ориентированные языки программирования Использование объектно-ориентированной методологии не ограничено каким-либо одним языком программирования - она применима к широкому спектру объектных и объектно-ориентированных языков. Наряду с анализом и


1.5.2. Перспективы программирования

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

1.5.2. Перспективы программирования Наверное, каждый, кто знает Ruby (сегодня), в прошлом изучал или пользовался другими языками. Это, с одной стороны, облегчает изучение Ruby, так как многие средства похожи на аналогичные средства в других языках. С другой стороны, у


18.1.2. Реализация многопоточного сервера

Из книги Веб-Самоделкин. Как самому создать сайт быстро и профессионально автора Гладкий Алексей Анатольевич

18.1.2. Реализация многопоточного сервера Некоторые серверы должны обслуживать очень интенсивный поток запросов. В таком случае эффективнее обрабатывать каждый запрос в отдельном потоке.Ниже показана реализация сервера текущего времени, с которым мы познакомились в


Глава 2. Основы веб-программирования с помощью языка HTML

Из книги VBA для чайников автора Каммингс Стив

Глава 2. Основы веб-программирования с помощью языка HTML Аббревиатура HTML знакома даже людям, которые по роду занятий далеки от веб-разработки. Она получила известность хотя бы потому, что адреса многих веб-страниц в Интернете заканчиваются расширением


Глава 3. Основы программирования на VBA.

Из книги Путь программиста: от 100$ до 10000$ в месяц автора Никитин Александр

Глава 3. Основы программирования на VBA. В этой главе ...~ Запуск редактора Visual Basic~ Использование справочной системы VBA~ Программирование в VBA - краткое и нестрогое руководствоМакросы хороши до определенных пределов, но гораздо больше можно получить от полноценных


Приложение А. Чем Школа Программирования может быть полезна лично Вам

Из книги Macromedia Flash Professional 8. Графика и анимация автора Дронов В. А.

Приложение А. Чем Школа Программирования может быть полезна лично Вам Что ж, если Вы дочитали эту книгу почти до конца, то, наверное, со многим описанным Вы можете согласиться. Впрочем, нет необходимости соглашаться абсолютно со всем. У каждого из нас уникальный опыт,


Глава 18 Основы программирования во Flash

Из книги Создание игр для мобильных телефонов автора Моррисон Майкл

Глава 18 Основы программирования во Flash Вот мы и добрались до программирования. Путь был долог и тяжел, но мы его преодолели, расправившись по дороге со статичной и анимированной графикой, импортированным видео и звуком. Перед нами высятся неприступные стены и грозные


Приложение B Ресурсы программирования мобильных игр

Из книги Основы программирования на Java автора Сухов С. А.

Приложение B Ресурсы программирования мобильных игр Вероятно, самое важное в программировании мобильных игр – это постоянное обновление в соответствии с последними тенденциями и технологиями. К счастью, в сети Internet вы найдете большое количество ресурсов по


Приложение В Функции программирования Flash в AMIBIOS

Из книги Программирование на Java автора Вязовик Николай Александрович

Приложение В Функции программирования Flash в AMIBIOS За программирование Flash в AMIBIOS отвечает функция E0h прерывания INT 16h. При вызове прерывания INT 16h номер функции должен находиться в регистре AH, номер подфункции – в регистре AL. При возврате из функции регистр AL содержит FAh как


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

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

Основы shell–программирования В четвертой части мы приступим к написанию сценариев интерпретатора shell. Здесь приведены указания по созданию исполняемых файлов и по их выполнению в среде интерпретатора shell, а также продемонстрированы принципы применения в сценариях


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

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

Основы программирования на Java учебное пособиеУльяновск: УлГТУ2006 ВВЕДЕНИЕ Java - это язык программирования для Internet. Java - это язык для создания безопасных, переносимых, надежных, объектно-ориентированных интерактивных программ с параллельно выполняющимися


2. Лекция: Основы объектно-ориентированного программирования

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

2. Лекция: Основы объектно-ориентированного программирования В этой лекции излагается основная концепция объектно-ориентированного подхода (ООП) к проектированию программного обеспечения. Поскольку в Java почти все типы (за исключением восьми простейших) являются