Проект GnuPG представил новую свободную многопоточную библиотеку nPth

9 мая 2012 года

Wikinews-logo-ru.svg

Представлен первый выпуск новой свободной библиотеки для создания многопоточных приложений - 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.

 

ИсточникиПравить


Эта статья содержит материалы из статьи «Проект GnuPG представил новую свободную многопоточную библиотеку nPth», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
 

Комментарии:Проект GnuPG представил новую свободную многопоточную библиотеку nPth