Проект GnuPG представил новую свободную многопоточную библиотеку nPth
9 мая 2012 года
Представлен первый выпуск новой свободной библиотеки для создания многопоточных приложений - nPth (New GNU Portable Threads Library). Изначально библиотека развивалась в рамках проекта GnuPG с целью создания более совершенной замены стандартной библиотеки GNU Pth, поддерживающей работу в современных операционных системах. Последний корректирующий релиз GNU Pth вышел в 2006 году, а последний значительный выпуск в 2004 году, c тех пор проект не развивается. Так как новая библиотека может представлять интерес и для других проектов, было принято решение развивать nPth в виде обособленного продукта. Код библиотеки распространяется под лицензиями LGPLv3 и GPLv2.
nPth предоставляет API, похожий на GNU Pth, и реализует невытесняющую модель организации работы нитей (non-preemptive, кооперативная многопоточность). Ключевым отличием от GNU Pth является уход от использования собственного диспетчера управления выполнением потоков в пользу стандартных системных реализаций многопоточности. Подобный подход позволяет использовать в приложениях библиотеки не совместимые с GNU Pth.
В программе GnuPG библиотека GNU Pth изначально активно использовалась для обеспечения выполнения вспомогательных сопрограмм. Реализуемая в GNU Pth концепция обеспечивала хорошую читаемость кода, соблюдение безопасности и простоту реализации. Но все достоинства GNU Pth меркли из-за необходимости придумывания "грязных хаков" при необходимости использования дополнительных библиотек, не совместимых с GNU Pth. Желание избавиться от этого недостатка и послужило главным стимулом для создания библиотеки nPth.
Истоки создания nPth начинаются с 2004 года, когда при портировании GnuPG 2 для Windows разработчики столкнулись с необходимостью замены библиотеки GNU Pth, которая не поддерживала данную платформу. Для решения проблемы была создана специальная надстройка над GNU Pth, эмулирующая работу API данной библиотеки, используя Windows API для многопоточности. Впоследствии данный подход показал, что подобная эмуляция является оптимальным способом обеспечения выполнения сопрограмм в GnuPG, особенно с учетом повсеместной поддержки pthreads на всех платформах.
В настоящее время на новую библиотеку уже переведена экспериментальная ветка GnuPG 2.1, поэтому проект nPth уже можно рассматривать как пригодный для повсеместного использования. Из остающихся недоработок, отмечается наличие проблем с переносимостью на некоторые редкие платформы. Но данные проблемы планируется решить к моменту выхода релиза nPth 1.0. На распространённых платформах, в том числе в Linux, kFreeBSD и Android, библиотека собирается и работает без нареканий. Что касается библиотеки GNU Pth, то судя по всему её дни сочтены - в настоящее время в репозитории Debian, кроме GnuPG, данная библиотека находится в зависимостях всего у двух пакетов - zhcon и jabberd14.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.