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

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



Яндекс.Метрика
Счётчик ТЦ#65533;Ц LiveRSS: Каталог русскоязычных RSS-каналов