Параллельное программирование с OmniThreadLibrary

ЭМБАРГО!

Журналисты и блогеры: пожалуйста, не публикуйте ничего об этом, пока эмбарго не будет снято!

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

Изъято

Эта книга больше не доступна для продажи.

Параллельное программирование с OmniThreadLibrary

О книге

Эта книга о параллельном программировании с OmniThreadLibrary (otl.17slon.com), могопоточной библиотеке для Delphi. Вы можете получить дополнительную информацию о книге и текущем состоянии каждой главы в thedelphigeek.com.

Эта книга является переводом на Русский книги Parallel Programming with OmniThreadLibrary, которая изначально была написана на Английский.

Об авторах

Primož Gabrijelčič
Primož Gabrijelčič

Primož Gabrijelčič - Delphi программист с большим стажем, писатель для журналом The Delphi Magazine, Monitor и Blaise Pascal. Часто публикуется в сообществе Delphi-SI. Его мысли, связанные с Delphi, публикуются в блоге The Delphi Geek.За свою долгую карьеру он выпустил несколько проектов с открытым кодом, таких как Delphi профилировщик GpProfile (сейчас поддерживается другими). Его активные проекты включают в себя OmniThreadLibrary, многопоточная библиотека для Delphi и несколько инструментов Delphi с открытым исходным кодом, опубликованные в GpDelphiUnits хранилище.

Александр Егоров - Delphi разработчик начиная с Borland Delphi 1.0.

Занимается разработкой программ, связанных с печатью. Главный разработчик программы мониторинга печати Print Censor и расширенного менеджера печати Remote Queue Manager.

Alex Egorov
Alex Egorov

Primož Gabrijelčič - Delphi программист с большим стажем, писатель для журналом The Delphi Magazine, Monitor и Blaise Pascal. Часто публикуется в сообществе Delphi-SI. Его мысли, связанные с Delphi, публикуются в блоге The Delphi Geek.За свою долгую карьеру он выпустил несколько проектов с открытым кодом, таких как Delphi профилировщик GpProfile (сейчас поддерживается другими). Его активные проекты включают в себя OmniThreadLibrary, многопоточная библиотека для Delphi и несколько инструментов Delphi с открытым исходным кодом, опубликованные в GpDelphiUnits хранилище.

Александр Егоров - Delphi разработчик начиная с Borland Delphi 1.0.

Занимается разработкой программ, связанных с печатью. Главный разработчик программы мониторинга печати Print Censor и расширенного менеджера печати Remote Queue Manager.

Содержание

  • Благодарности
  • Перевод
  • Введение
  • Соглашения форматирования
  • В разработке
  • Объявление
  • Примечания к выпуску
  • 1 Введение в многопоточность
  • 1.1 Бесплатной еды больше не будет (The Free Lunch is Over)
  • 2 Введение в OmniThreadLibrary
  • 2.1 Требования
  • 2.2 Лицензия
  • 2.3 Установка
  • 2.3.1 Установка пакета времени разработки
  • 2.4 Зачем использовать OmniThreadLibrary?
  • 2.5 Задачи или потоки
  • 2.6 Блокирование или соообщения
  • 2.7 TOmniValue
  • 2.8 Свободные интерфейсы
  • 3 Высокоуровневая многопоточность
  • 3.1 Введение
  • 3.1.1 Жизненный цикл Абстракции
  • 3.1.2 Анонимные методы, Методы и Процедуры
  • 3.1.3 Пулинг
  • 3.2 Блокирующая коллекция
  • 3.2.1 IOmniBlockingCollection
  • 3.2.2 Регулирование
  • 3.3 Конфигурация задач
  • 3.4 Асинхронность (Async)
  • 3.4.1 Обработка исключений
  • 3.5 Async/Await
  • 3.6 Будущее (Future)
  • 3.6.1 Интерфейс IOmniFuture
  • 3.6.2 Определение завершения
  • 3.6.3 Отмена
  • 3.6.4 Обработка исключений
  • 3.6.5 Примеры
  • 3.7 Присоединение (Join)
  • 3.7.1 Интерфейс IOmniParallelJoin
  • 3.7.2 Интерфейс IOmniJoinState
  • 3.7.3 Отмена
  • 3.7.4 Обработка исключений
  • 3.8 Параллельная задача (Parallel Task)
  • 3.8.1 Интерфейс IOmniParallelTask
  • 3.8.2 Пример
  • 3.8.3 Обработка исключений
  • 3.8.4 Примеры
  • 3.9 Фоновый рабочий (Background Worker)
  • 3.9.1 Основы
  • 3.9.2 Интерфейс IOmniBackgroundWorker
  • 3.9.3 Инициализация задачи
  • 3.9.4 Конфигурация рабочих элементов
  • 3.9.5 Интерфейс рабочего элемента
  • 3.9.6 Примеры
  • 3.10 Конвейер (Pipeline)
  • 3.10.1 Понятия
  • 3.10.2 Основы
  • 3.10.3 IOmniPipeline
  • 3.10.4 Генераторы, Преобразователи и Агрегаторы
  • 3.10.5 Регулирование
  • 3.10.6 Параллельные этапы
  • 3.10.7 Исключения
  • 3.10.8 Примеры
  • 3.11 Для каждого (For Each)
  • 3.11.1 Сотрудничество
  • 3.11.2 Перебираем …
  • 3.11.2.1 … Числовые диапазоны
  • 3.11.2.2 … Перечисляемые коллекции
  • 3.11.2.3 … Потокобезопасные перечисляемые коллекции
  • 3.11.2.4 … Блокирующие коллекции
  • 3.11.2.5 … Всё
  • 3.11.3 Обеспечение внешнего ввода
  • 3.11.4 IOmniParallelLoop
  • 3.11.5 Сохранение выходного порядка
  • 3.11.6 Агрегация
  • 3.11.7 Отмена
  • 3.11.8 Инициализация и завершение задачи
  • 3.11.9 Обработка исключений
  • 3.11.10 Внутреннее устройство
  • 3.11.10.1 Поставщик источника
  • 3.11.10.2 Менеджер данных
  • 3.11.10.3 Локальная очередь
  • 3.11.10.4 Упорядочивание вывода
  • 3.11.11 Примеры
  • 3.12 Разделение/Присоединение (Fork/Join)
  • 3.12.1 IOmniForkJoin
  • 3.12.2 IOmniCompute
  • 3.12.3 IOmniCompute<T>
  • 3.12.4 Исключения
  • 3.12.5 Примеры
  • 4 Низкоуровневая многопоточность
  • 4.1 Пул потоков
  • 4.2 Неблокируемые коллекции
  • 4.2.1 Ограниченный стек
  • 4.2.2 Ограниченная очередь
  • 4.2.3 Динамическая очередь
  • 4.3 Простые задачи
  • 4.3.1 Связь
  • 4.3.2 Вызов
  • 4.3.3 Исключения
  • 4.3.4 MonitorWith
  • 4.3.5 Отменяющий токен / CancelWith
  • 4.3.6 Блокировка / WithLock
  • 4.3.7 Счётчик / WithCounter
  • 4.3.8 Группа задач
  • 5 Синхронизация
  • 5.1 Критические секции
  • 5.1.1 IOmniCriticalSection
  • 5.1.2 TOmniCS
  • 5.1.3 Locked
  • 5.1.3.1 Почему бы не использовать TMonitor?
  • 5.2 TOmniMREW
  • 5.3 Отменяющий токен
  • 5.4 Ожидающее значение
  • 5.5 Обратный семафор
  • 5.6 Инициализация
  • 5.6.1 Пессимистичная инициализация
  • 5.6.2 Оптимистичная инициализация
  • 6 Разное
  • 6.1 TOmniValue
  • 6.2 TOmniCounter
  • 6.3 TGp4AlignedInt è TGp8AlignedInt64
  • 7 Как сделать… (How to…)
  • 7.1 Фоновое сканирование файлов
  • 7.2 Async/Await
  • 7.3 Загрузка из интернета и хранилище базы данных
  • 7.4 Параллельный For с синхронизированным выводом
  • 7.5 Фоновый рабочий и разделение списка
  • 7.6 Параллельное производство данных
  • 7.7 Создание пула соединений
  • 7.7.1 От теории к практике
  • 7.7.2 Запуск демо
  • 7.8 Быстрая сортировка и параллельный максимум
  • 7.8.1 Быстрая сортировка
  • 7.8.1.1 Параллельный максимум
  • 7.9 Параллельный поиск в дереве
  • 7.10 Несколько рабочих с несколькими структурами
  • 7.10.1 Рабочий
  • 7.10.2 Фрейм
  • 7.10.3 Форма
  • 7.11 OmniThreadLibrary и базы данных
  • 7.11.1 Модель базы данных
  • 7.11.2 Фрейм и рабочий
  • 7.11.2.1 Подключение к базе данных
  • 7.11.2.2 Получение данных
  • 7.11.3 Главная программа
  • 7.12 OmniThreadLibrary и COM/OLE
  • 8 Словарь
  • 9 Демонстрационные приложения

60-дневная гарантия 100% удовлетворения от Leanpub

В течение 60 дней после покупки вы можете получить 100% возврат средств за любую покупку на Leanpub всего в два клика.

Технически это рискованно для нас, поскольку файлы книги или курса останутся у вас в любом случае. Но мы настолько уверены в наших продуктах и услугах, а также в наших авторах и читателях, что с радостью предлагаем полную гарантию возврата денег за всё, что мы продаем.

Узнать, насколько что-то хорошо, можно только попробовав, а благодаря нашей 100% гарантии возврата денег это можно сделать без всякого риска!

Так что нет причин не нажать кнопку "Добавить в корзину", не так ли?

Ознакомьтесь с полными условиями...

Получайте $8 с покупки за $10 и $16 с покупки за $20

Мы выплачиваем 80% роялти за покупки от $7.99 и выше, и 80% роялти минус фиксированную комиссию 50 центов за покупки в диапазоне от $0.99 до $7.98. Вы зарабатываете $8 с продажи за $10 и $16 с продажи за $20. Таким образом, если мы продадим 5000 невозвращенных копий вашей книги по $20, вы заработаете $80,000.

(Да, некоторые авторы уже заработали намного больше этого на Leanpub.)

Фактически, авторы заработалиболее $14 миллионов, создавая, публикуя и продавая на Leanpub.

Узнайте больше о писательстве на Leanpub

Бесплатные обновления. Без DRM.

Если вы покупаете книгу на Leanpub, вы получаете бесплатные обновления, пока автор обновляет книгу! Многие авторы используют Leanpub для публикации своих книг в процессе написания. Все читатели получают бесплатные обновления, независимо от того, когда они купили книгу и сколько заплатили (включая бесплатные книги).

Большинство книг Leanpub доступны в форматах PDF (для компьютеров) и EPUB (для телефонов, планшетов и Kindle). Форматы, в которых доступна книга, показаны в правом верхнем углу этой страницы.

Наконец, книги Leanpub не имеют никакой бессмысленной DRM-защиты, поэтому вы можете легко читать их на любом поддерживаемом устройстве.

Узнайте больше о форматах электронных книг Leanpub и где их читать

Пишите и публикуйте на Leanpub

Вы можете использовать Leanpub для простого написания, публикации и продажи электронных книг и онлайн-курсов в процессе работы над ними или уже завершённых!

Leanpub - это мощная платформа для серьёзных авторов, сочетающая простой, элегантный процесс написания и публикации с магазином, ориентированным на продажу книг в процессе их создания.

Leanpub - это волшебная печатная машинка для авторов: просто пишите обычным текстом, и для публикации вашей электронной книги достаточно нажать одну кнопку. (Или, если вы создаёте свою электронную книгу собственным способом, вы даже можете загрузить свои собственные файлы PDF и/или EPUB и затем опубликовать их одним щелчком мыши!) Это действительно так просто.

Узнайте больше о публикации на Leanpub