Многопоточный менеджер
Многопоточный менеджер
Следующим шагом развития техники менеджера ресурсов является многопоточный менеджер. Фактически это объединение техники менеджера ресурсов с динамическим пулом потоков, рассмотренным выше.
Реальный работающий многопоточный менеджер с сопутствующим ему обстоятельным обсуждением приводился нами в книге [4] в главе «Драйверы». Мы не станем полностью приводить здесь этот достаточно объемный текст, поскольку он отличается от ранее показанного однопоточного менеджера только несколькими строками после вот этого оператора регистрации префикса имени менеджера:
// здесь создается путевое имя для менеджера
id = resmgr_attach(dpp, &resmgr_attr, "/dev/prior",
_FTYPE_ANY, 0, &connect_funcs, &io_funcs, &attr);
if (id == -1)
perror("attach name"), exit(EXIT_FAILURE);
Вот те несколько строк, которые, собственно, и превращают однопоточный менеджер в многопоточный:
...
thread_pool_attr_t pool_attr;
memset(&pool_attr, 0, sizeof pool_attr);
pool_attr.handle = dpp;
// это всегда остается так ...:
pool_attr.context_alloc = dispatch_context_alloc;
pool_attr.block_func = dispatch_block;
pool_attr.handler_func = dispatch_handler;
pool_attr.context_free = dispatch_context_free;
// численные параметры пула:
pool_attr.lo_water = 2;
pool_attr.hi_water = 6;
pool_attr.increment = 1;
pool_attr.maximum = 50;
thread_pool_t *tpp;
// флаг создания пула, который может принимать значения:
// POOL_FLAG_EXIT_SELF, POOL_FLAG_USE_SELF или,
// наконец, 0 и который определяет, что будет
// происходить дальше с вызывающим потоком...
if ((tpp = thread_pool_create(&pool_attr, POOL_FLAG_EXIT_SELF)) == NULL)
perror("create pool"), exit(EXIT_FAILURE);
thread_pool_start(tpp);
...
}
Но всю эту последовательность действий мы уже видели ранее при описании динамического пула потоков, и какого-то специфического отношения к созданию именно менеджера ресурса она не имеет.
Вот такими элементарными манипуляциями мы превращаем менеджер ресурса (практически любой менеджер!) в многопоточный. С другой стороны, простота трансформации одной формы в другую подсказывает простое и эффективное решение: вначале всегда пишите одно- поточный менеджер, поскольку в отладке и понимании он намного проще, и только потом при необходимости трансформируйте его в многопоточный.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Пример: многопоточный поиск контекста
Пример: многопоточный поиск контекста В программе 6.1 (grepMP) для выполнения одновременного поиска текстового шаблона в нескольких файлах использовались процессы. Программа 7.1 (grepMT), которая включает исходный код функции поиска текстового шаблона grep, обеспечивает
Резюме: безопасный многопоточный код
Резюме: безопасный многопоточный код Прежде чем мы приступим к рассмотрению объектов синхронизации, ознакомьтесь с пятью начальными рекомендациями, соблюдение которых будет гарантировать корректное выполнение программ в многопоточной среде.1. Переменные, являющиеся
Сообщения или менеджер?
Сообщения или менеджер? Этот вопрос возникает (должен возникать!) у каждого, кто приступает к разработке реального проекта, особенно если функциональность проекта распределяется между несколькими автономными процессами. Такая структуризация и вовсе не привычна
3.1. Менеджер пакетов yum
3.1. Менеджер пакетов yum 3.1.1. Основные понятие о пакетах Давайте сначала рассмотрим процесс установки программ в Windows. Как правило, дистрибутив Windows-программы состоит та установочного файла (обычно называется setup.exe или install.exe) и нескольких вспомогательных файлов (например,
21.1 Менеджер обновлений
21.1 Менеджер обновлений Основным инструментом работы с обновлениями является, как ни странно, Менеджер обновлений. Найти его можно в меню Система?Администрирование. Собственно сам менеджер умеет выполнять только свои прямые обязанности, поэтому его интерфейс весьма
Контент-менеджер
Контент-менеджер В сфере Social Media Marketing (SMM) сегодня есть специалисты, которые нужны большим, средним и малым компаниям для продвижения в социальных сетях Это так называемые контент-менеджеры, одни из которых генерируют информацию, а другие ее продвигают (имеется в виду
Менеджер
Менеджер Роль менеджера заключается в техническом и административном руководстве и контроле над лицами, выполняющими задачи и действия внутри сферы ответственности менеджера. К традиционным функциям менеджера относятся планирование, распределение ресурсов,
Менеджер проекта
Менеджер проекта Роль менеджера проекта обладает сферой ответственности, которая включает в себя все деловые аспекты целого проекта. Менеджер проекта направляет, контролирует, администрирует и регулирует проект разработки программной или программно-аппаратной
Производственный менеджер проекта
Производственный менеджер проекта В сферу ответственности входят все производственные действия проекта. Он является лицом, взаимодействующим с менеджером проекта по вопросам производственных обязательств и контролирующим все производственные ресурсы
Линейный менеджер
Линейный менеджер В сферу ответственности линейного менеджера входит непосредственное управление (включая техническое руководство и администрирование персонала и зарплаты) персоналом и действиями отдельной организационной единицы (например, отдела или проектной
2.13 Оконный менеджер «WindowMaker»
2.13 Оконный менеджер «WindowMaker» Рис. 2-9«WindowMaker» («WM») — это свободная реализация (в рамках проекта «GNUStep») концепций «NextSTEP» — первой получившей более или менее широкую известность универсальной графической среды пользователя. За недоступностью оригинальной «NextSTEP» для
2.14 Оконный менеджер «IceWM»
2.14 Оконный менеджер «IceWM» «IceWM» — простой оконный менеджер, очень часто выбираемый пользователями, приходящими из-под «Майкрософт Уиндоуз» или «ОС/2», поскольку он способен достаточно точно имитировать их основные черты.Из автономных виджетов прежде всего стоит
Менеджер фотографий F-Spot
Менеджер фотографий F-Spot Разбираться с большим количеством фотографий непросто. На помощь придет утилита F-Spot. Программа F-Spot (http://f-spot.org/) предназначена для организации коллекций фотографий. Обладает простым и понятным интерфейсом, переведенным на русский язык (рис.
Оконный менеджер IceWM
Оконный менеджер IceWM Как уже говорилось выше, оконных менеджеров в Linux предостаточно. Самыми популярными являются AfterStep, Blackbox, Enlightenment, Window Maker, IceWM и twm (стандартный менеджер для X Window System). Все они имеют свои особенности, и каждый по-своему интересен. Остановлюсь на одном их
Софтерра: Безоконный менеджер
Софтерра: Безоконный менеджер В компьютерном мире есть люди, буквально помешанные на эффективности своей работы. Они не любят мышь, считая ее неудобным инструментом, отнимающим кучу времени. Их бросает в дрожь при виде человека, тратящего десятки секунд на поиск нужной
«Менеджер телефона» от Bezols
«Менеджер телефона» от Bezols Программа «Менеджер телефона» отличается малым размером (дистрибутив занимает всего 530 Кбайт), простым интерфейсом и отличным быстродействием. Кнопки, расположенные в левой части главного окна, переключают режимы работы программы.В режиме