Полезные конспекты книг и авторские заметки по информационным технологиям. Без формул. Алексей Сергеевич Лот

Чтение книги онлайн.

Читать онлайн книгу Полезные конспекты книг и авторские заметки по информационным технологиям. Без формул - Алексей Сергеевич Лот страница 13

Полезные конспекты книг и авторские заметки по информационным технологиям. Без формул - Алексей Сергеевич Лот

Скачать книгу

доступные классы на предмет потоково-безопасности.

      Модели логического разбиения поведения программы при многопоточности:

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

      – модель читатели-писатели: писатели пишут в общий ресурс, который считывают читатели. Писатель может блокировать читателей. Нужно найти баланс между потребностями читателей и писателей, чтобы обеспечить правильный режим работы, нормальную производительность и избежать зависания;

      – модель обедающих философов: за круглым столом сидят философы-потоки и думают, в центре – тарелка еды. Каждому философу для еды доступно 2 вилки-ресурсы – по 1 от соседей. Когда философ проголодается – берет вилки, поел – кладет обратно. Сложности проектирования – взаимные блокировки, обратные блокировки, падение производительности и эффективность работы.

      Изучать базовые алгоритмы, разбираться в решениях.

      Избегать использования нескольких методов одного совместно используемого объекта.

      Избегать зависимостей между синхронизированными методами.

      Или использовать 3 стандартных решения:

      – блокировка на стороне клиента;

      – блокировка на стороне сервера;

      – адаптирующий сервер.

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

      Синхронизированные секции должны иметь минимальные размеры.

      Корректное завершение не может быть бесконечным ожиданием потока.

      Реализовать логическую изоляцию конфигураций многопоточного кода.

      Протестировать программу с количеством потоков, превышающим число процессоров.

      Применять инструментовку кода для повышения вероятности сбоев.

      Сначала отлаживать основной код.

      Не игнорировать системные ошибки, считая их случайными разовыми сбоями.

      Убедиться, что сам код работает вне многопоточного контекста, созданием POJO-объектов, вызываемых из потоков.

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

      Найти средства измерения производительсноти системы в разных конфигурациях.

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

Скачать книгу