The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Проект GnuPG представил новую свободную многопоточную библио..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Проект GnuPG представил новую свободную многопоточную библио..."  +/
Сообщение от opennews (ok) on 09-Май-12, 15:27 
Представлен (http://lists.gnupg.org/pipermail/gnupg-announce/2012q2/00031...) первый выпуск новой свободной библиотеки для создания многопоточных приложений - nPth (http://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=summary) (New GNU Portable Threads Library). Изначально библиотека развивалась в рамках проекта GnuPG с целью создания более совершенной замены стандартной библиотеки GNU Pth (http://www.gnu.org/software/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.


URL: http://lists.gnupg.org/pipermail/gnupg-announce/2012q2/00031...
Новость: http://www.opennet.me/opennews/art.shtml?num=33799

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Проект GnuPG представил новую свободную многопоточную библио..."  +/
Сообщение от Stax (ok) on 09-Май-12, 15:27 
То есть на линуксе это будет просто оберткой вокруг pthread с другим API?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Проект GnuPG представил новую свободную многопоточную библио..."  –6 +/
Сообщение от Аноним (??) on 09-Май-12, 16:22 
В линуксе нет тредов.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Проект GnuPG представил новую свободную многопоточную библио..."  +1 +/
Сообщение от Ag (ok) on 09-Май-12, 16:33 
> В линуксе нет тредов.

Не пишите глупости, есть. Это в «классическом» Unix-е был только fork. И то лет 20 тому назад.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

14. "Треды в линуксе"  –5 +/
Сообщение от nuclight email(ok) on 09-Май-12, 22:03 
>> В линуксе нет тредов.
> Не пишите глупости, есть. Это в «классическом» Unix-е был только fork. И
> то лет 20 тому назад.

Нету. Именно как тредов - нету. Это для Linux вообще характерно во многих областях - есть подход всех обычных ОС, а есть как в линуксе. Например, везде кроме ядра есть понятие базовой системы ОС и сторонних программ - а в линуксе нету, там кроме ядра только пакеты.

Но вернемся к тредам. В типичных ОС (Windows, Solaris, FreeBSD) есть две раздельные сущности - процесс и тред (раздельные сущности с именами, например, struct proc и struct thread в ядре). Процесс имеет свое пространство виртуальной памяти, свой набор файловых дескрипторов, и др. атрибуты, особняком из которых стоят один или несколько тредов - просто поток исполнения со своим стеком и контекстом (набор регистров). Всё остальное принадлежит процессу.

В линуксе же всё - процесс. Тред в линуксе - просто легковесный процесс. В случае нескольких тредов в одном процессе эти нижележащие легковесные процессы просто разделяют (shared) те же самые атрибуты в виде пространства VM, дескрипторов и др. Собственно, если начало двухтысячных кто вспомнит, тогда даже в top можно бывало видеть артефакты этой реализации - многотредная программа показывалась как несколько процессов.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

16. "Треды в линуксе"  +1 +/
Сообщение от Аноним (??) on 09-Май-12, 22:28 
> Например, везде кроме ядра есть понятие базовой системы ОС и сторонних программ - а в линуксе нету, там кроме ядра только пакеты.

Подобный подход является закономерным следствием слабого ресурсного обеспечения.
Например, в той же FreeBSD сравнительно мало активных мейнтейнеров, и они не могут эффективно поддерживать весь спектр ПО. Поэтому оно разделено на две категории: небольшая базовая система (с более-менее нормальной поддержкой, хотя в последние годы и она сильно сдала), и порты, которые поддерживаются нерегулярно, от случая к случаю.

В крупных дистрибутивах GNU/Linux подобных проблем просто нет: практически все ПО, включая совершенно некритичное для системы в целом, поддерживается нормально - квалифицированный мейнтейнеров для этого достаточно.

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

17. "базовая система и пакеты"  +/
Сообщение от nuclight email(ok) on 09-Май-12, 22:52 
Не является само по себе, базовая система как понятие развязана с проблемой ресурсов - это ж подход проектирования. У разработчиков коммерческих ОС, хотя бы тех же перечисленных комментом выше Solaris и Windows, тоже не хватает ресурсов? :)
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

26. "базовая система и пакеты"  –1 +/
Сообщение от Аноним (??) on 10-Май-12, 00:32 
В коммерческих ОС подобный подход диктуется принципом уменьшения расходов (и повышения прибыльности). Так что фактор ресурсов здесь тоже играет.

Позволить себе полноценную поддержку обширных реп софта может только _крупный_ _некоммерческий_ проект.

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

18. "Треды в линуксе"  +1 +/
Сообщение от Аноним (??) on 09-Май-12, 22:54 
> Тред в линуксе - просто легковесный процесс. В случае нескольких тредов в одном процессе эти нижележащие легковесные процессы просто разделяют (shared) те же самые атрибуты в виде пространства VM, дескрипторов и др.

Это не в линуксе, это везде так. Тред от процесса как раз и отличается тем, что у тредов одного процесса общая память и дескрипторы (или "раздельные стек и контекст", что есть то же самое). Хоть в линухе, хоть в Solaris, хоть в BSD (не только FreeBSD), хоть в Windows. А одна структура у этих сущностей или же общая с разными атрибутами — не важно.

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

19. "Треды в линуксе"  +1 +/
Сообщение от Аноним (??) on 09-Май-12, 23:00 
> Нету. Именно как тредов - нету. Это для Linux вообще характерно во
> многих областях - есть подход всех обычных ОС, а есть как
> в линуксе. Например, везде кроме ядра есть понятие базовой системы ОС
> и сторонних программ - а в линуксе нету, там кроме ядра
> только пакеты.

Странно. На *моем* линуксе есть и пакеты, и сторонние программы. Может, вы пользуетесь каким-то не таким линуксом? Не говоря уже о том, что "подход обычных ОС" — ставить всё, что есть в репозиториях, из оных репозиториев. И в линуксе так, и в бсдях, и в солярке, и даже яблоко использует пусть и не идентичный подход, но близкий. Только винда выделывается.

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

27. "Треды в линуксе"  +/
Сообщение от Аноним (??) on 10-Май-12, 00:35 
> Странно. На *моем* линуксе есть и пакеты, и сторонние программы. Может, вы
> пользуетесь каким-то не таким линуксом? Не говоря уже о том, что
> "подход обычных ОС" — ставить всё, что есть в репозиториях, из
> оных репозиториев. И в линуксе так, и в бсдях, и в
> солярке, и даже яблоко использует пусть и не идентичный подход, но
> близкий. Только винда выделывается.

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

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

40. "Треды в линуксе"  +/
Сообщение от fi (ok) on 14-Май-12, 16:55 
> Все же, в солярке и бсд существует четкое разделение: за базовую систему разработчики ручаются, а остальное пользователь ставит на свой страх и риск.

А где же по другому???  берем к примеру rhel, sles or ubuntu - за базовую систему разработчики ручаются

Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

20. "Треды в линуксе"  +4 +/
Сообщение от Ano on 09-Май-12, 23:11 
Поясни экспёрд, чем принципиально "легковесные процессы" отличаются от классических трэдов? И кстати, в русском языке нет слова "нету", грамотей.
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

21. "Треды в линуксе"  +/
Сообщение от FrBrGeorge email(ok) on 09-Май-12, 23:22 
> Собственно, если начало двухтысячных кто вспомнит

С тех пор многое поменялось.

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

38. "Треды в линуксе"  +1 +/
Сообщение от Аноним (??) on 10-Май-12, 23:51 
>> Собственно, если начало двухтысячных кто вспомнит
> С тех пор многое поменялось.

В мире *BSD с тех пор не поменялось ничего. И они до сих пор считают себя лидерами среди свободных ОС :)

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

30. "Треды в линуксе"  –2 +/
Сообщение от nuclight email(ok) on 10-Май-12, 01:32 
Лол, повылезали неграмотные тролли, одни не понимают, что важно, а что нет (следующий шаг - договоритесь до #5, который во всех ОС вообще одинаковый, а какая тогда разница, ага), другие не понимают разницы между сторонней программой вообще (есть ОС как цельный продукт, состоящая из ядра и его окружения, а есть все остальные сторонние программы) и способом её упаковки (тарбол с исходниками, пакет, поддерживаемый пусть и производителем репозиторий, какая разница, софт всё равно сторонний).

А если кому правда интересно, как оно там внутри, я порекомендую хорошую книжку (по которой и пересказал выше) by Роберт Лав, "Разработка ядра Linux" (о сериях 2.6), http://www.ozon.ru/context/detail/id/2918313/

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

31. "Треды в линуксе"  +/
Сообщение от Аноним (??) on 10-Май-12, 13:26 
Ладно б базовая система vs пакеты. Можно ко всему в пакетах привыкнуть. Для кого-то это выглядит возможностью "поставить только нужное" (с наличием базовой системы так сделать никто не запрещает, я знаю ;).

А вот дефолтное расположение баз того же мускуля в /var/lib и пустующий /var/db, отсутсвие документации (точнее, местами большие пробелы в ней), отсутствие init скрипта для svnserve - всё это бытовые мелочи, с которыми можно справиться и победить, но зачем, если можно по-нормальному? Единственное, что после каждой такой победы ЧСВ поднимается, да. :)

Не холивара ради (их тут разводить почти бессмысленно), а просто накипело. Peace.

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

5. "Проект GnuPG представил новую свободную многопоточную библио..."  +8 +/
Сообщение от pavlinux (ok) on 09-Май-12, 18:15 
Прально, там есть sys_clone(),
а sys_clone() это обертка для do_fork(),
do_fork() - обёртка для copy_process()
а copy_process() это замороченный malloc + куча флагов и блокировок.

Фсё, пиз...ц, - ни форков, ни тредов не существует, есть:
...
mov eax, proc_data
jz new_proc
...

Всех с победой!!!

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

36. "Проект GnuPG представил новую свободную многопоточную библио..."  –2 +/
Сообщение от Andrew Kolchoogin on 10-Май-12, 23:05 
Не совсем так, до победы ещё далеко.

А вот thread'ов в Линуксе, действительно, нет, и вот почему: во всех нормальных операционных системах есть две операции -- создание процесса и создание потока исполнения. API и название функций значения не имеют -- имеет значение лишь то, что один процесс примерно в 5-6 раз медленнее другого.

Так вот, в Линуксе fork() и pthread_create() примерно равны, так сказать, "по тяжести". Собственно, именно поэтому в Линуксе thread'ов нет.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

37. "Проект GnuPG представил новую свободную многопоточную библио..."  +1 +/
Сообщение от Аноним (??) on 10-Май-12, 23:50 
Ну линуксоиды же не виноваты, что не стали обвешивать и затормаживать fork(), как это сделано в "нормальных операционных системах".
Ответить | Правка | ^ к родителю #36 | Наверх | Cообщить модератору

7. "Проект GnuPG представил новую свободную многопоточную библио..."  +/
Сообщение от Аноним (??) on 09-Май-12, 18:35 
> В линуксе нет тредов.

И процессов тоже нет?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

8. "Проект GnuPG представил новую свободную многопоточную библио..."  +2 +/
Сообщение от pavlinux (ok) on 09-Май-12, 18:38 
>> В линуксе нет тредов.
> И процессов тоже нет?

Нет, сынок - это фантастика (с) Есть тригеры, которые стираются-записываются, а назвать ты это как хошь можешь.  

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

11. "Проект GnuPG представил новую свободную многопоточную библио..."  +2 +/
Сообщение от Anonymouss on 09-Май-12, 18:46 
И ложки тоже нет
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

13. "Проект GnuPG представил новую свободную многопоточную библио..."  +/
Сообщение от Аноним (??) on 09-Май-12, 18:54 
ЛОМАЮЩИЕ НОВОСТИ
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Проект GnuPG представил новую свободную многопоточную библио..."  +4 +/
Сообщение от Аноним (??) on 09-Май-12, 18:44 
> В линуксе нет тредов.

Поздравляю с разморозкой. Вы какого года заморозки, сэр?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

28. "Проект GnuPG представил новую свободную многопоточную библио..."  +2 +/
Сообщение от Аноним (??) on 10-Май-12, 00:36 
>> В линуксе нет тредов.
> Поздравляю с разморозкой. Вы какого года заморозки, сэр?

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

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

32. "Проект GnuPG представил новую свободную многопоточную библио..."  –3 +/
Сообщение от Аноним (??) on 10-Май-12, 17:45 
Как показывает практика - таки линуксоиды знают о *BSD по страшным сказкам. А там всё нежно и _логично_, и _практично_. И есть хендбук, с которого можно легко начать.
Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

33. "Проект GnuPG представил новую свободную многопоточную библио..."  +/
Сообщение от Аноним (??) on 10-Май-12, 18:04 
Нежно-нежно, прямо как в макоси :)
Ответить | Правка | ^ к родителю #32 | Наверх | Cообщить модератору

39. "Проект GnuPG представил новую свободную многопоточную библио..."  +/
Сообщение от Аноним (??) on 11-Май-12, 11:04 
Ну дыкть другой дистр попробуйте
Ответить | Правка | ^ к родителю #32 | Наверх | Cообщить модератору

4. "Проект GnuPG представил новую свободную многопоточную библио..."  +/
Сообщение от Аноним (??) on 09-Май-12, 18:11 
> реализует невытесняющую модель организации работы нитей

Так это нити (как ruby fibers) или все же потоки (threads)?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Проект GnuPG представил новую свободную многопоточную библио..."  –1 +/
Сообщение от Анон on 09-Май-12, 18:34 
Если уж на то пошло, потоки - это streams. А threads - это волокна.
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

10. "Проект GnuPG представил новую свободную многопоточную библио..."  +3 +/
Сообщение от onigurumimo on 09-Май-12, 18:45 
Знатоки, мля, словарь уже откройте.
Fibers - волокна, threads - нити.
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

12. "Проект GnuPG представил новую свободную многопоточную библио..."  +/
Сообщение от Аноним (??) on 09-Май-12, 18:53 
> Если уж на то пошло, потоки - это streams. А threads - это волокна.

Если уж на то пошло, в IT как-то так принято называть потоки инструкций именно тредами. Когда о например CPU говорят что там "2 hardware threads" - имеют в виду что он выполняет 2 потока команд одновременно. Как-то так, да. Термин "streams" почему-то не прижился. Вы лучше англичан знаете как им называть вещи на английском? :)

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

23. "Проект GnuPG представил новую свободную многопоточную библио..."  +1 +/
Сообщение от Аноним (??) on 10-Май-12, 00:08 
>  Вы лучше англичан знаете как им называть вещи на английском? :)

мы знаем лучше омерекосов как им называть вещи на английском.

типа фикс.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

24. "Проект GnuPG представил новую свободную многопоточную библио..."  +/
Сообщение от BratSinot on 10-Май-12, 00:09 
Stream тоже прижился, только он применяется к потоку информации. Видео например.
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

29. "Проект GnuPG представил новую свободную многопоточную библио..."  +/
Сообщение от Аноним (??) on 10-Май-12, 01:10 
> Вы лучше англичан знаете как им называть вещи на английском? :)

В этой области царит терминологический бардак, не зависящий от носителя языка.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

15. "Проект GnuPG представил новую свободную многопоточную библио..."  +/
Сообщение от umbr (ok) on 09-Май-12, 22:06 
это одно и то же
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

25. "Проект GnuPG представил новую свободную многопоточную библио..."  +/
Сообщение от Аноним (??) on 10-Май-12, 00:13 
fiber (хз что там в руби нахерачели под этим понятием) = coroutines = green threads и почти = Non-preemptive threads, cooperative threads.

Это все != threads

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

34. "Проект GnuPG представил новую свободную многопоточную библио..."  +/
Сообщение от Gordio on 10-Май-12, 20:03 
А где самое главное?
Код с примером использования.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру