Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: pthread  (Прочитано 22674 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
alteest
Гость
« : 23-06-2003 10:34 » 

в общем то такая вешчь:
в RedHat 7.2 - юзаю pthread - все нормально.
пытюсь откомпилить на фрюхе (4.8) - так вот там выдает ошибку. ладно, качаю исходники другой проги - пытаюсь их откомпилить и при ./configure выдает - "cheking for pthread_create .......... -lptherad (cashing)   no" (ну или что-тот около того), т.е. не находит на фрюхе pthread-овских библиотек?
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 23-06-2003 14:45 » 

Надо пологать что, или configure не там искал заголовки, или ты их просто не поставил.
Попробуй поискать испытанным методом:
Код:
grep -d recurse  'pthread_create' /usr/include
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Olej
Гость
« Ответ #2 : 24-06-2003 15:08 » 

Цитата: alteest
в общем то такая вешчь:
в RedHat 7.2 - юзаю pthread - все нормально.
пытюсь откомпилить на фрюхе (4.8) - так вот там выдает ошибку. ладно, качаю исходники другой проги - пытаюсь их откомпилить и при ./configure выдает - "cheking for pthread_create .......... -lptherad (cashing)   no" (ну или что-тот около того), т.е. не находит на фрюхе pthread-овских библиотек?


Тут дело вот какое ... т.е. "наоборот": именно в Linux всё, что связано с pthread_* - реализовано "через-задницу" (это в сравнении с POSIX, а "через" - это через clone()). Т.е. всё, относящееся к pthread реализации в Linux & others-UNIX "раскладываются" в разные места (библиотеки, хэдеры...). Об этом уже писалось ... не помню деталей Жаль , а под рукой нет ни Linux ни FreeBSD ... есть только QNX, т.е. я, разве что, могу из него посмотреть: "как должно быть" Ага. Поищите - большой проблемы там нет.
Записан
alteest
Гость
« Ответ #3 : 25-06-2003 11:39 » 

насчет POSIX - согласен
Записан
Olej
Гость
« Ответ #4 : 25-06-2003 15:40 » 

Цитата: alteest
насчет POSIX - согласен


-Не согласен с кем? С Энгельсом или с Каутским?
-Да с обоими...
(с)М.Булгаков "Собачье сердце".

Что ж там "не согласен": в Linux (и только в Linux - в отличие от AllBSD, QNX ... всех UNIX-like, использующих BSD модель pthread в отличии от SysV) - pthread_create() делается через clone() (это и есть то "через задницу"), т.е. в точности тем механизмом, которым и fork... Об этом писано - переписано ... везде. И Linux-community брались это переправить в "последующих релизах"...

Так реализованный механизм thread просто НЕ МОЖЕТ в точности вести себя в соответствии с требованиями POSIX и особенно POSIX 1003.b - да и просто по количеству API относящихся к thread функций в Linux сейчас В РАЗЫ! меньше, чем в родственных ему BSD-like.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 25-06-2003 16:32 » 

POSIX тоже не идеал и в нем бывают противоречия и нелогичности.
BSD, не в обиду будет сказано, мне напоминает учебные полигон (а ведь, практически, так и было 20-25 лет назад), на котором студенты (правда, способные) тренеровались в создании новых API. И не всегда удачно, удобно и логично. Т.ч., я не считаю что, если в Linux-е некоторые syscall-ы работают иначе, что это недостаток. Возможно создатели clone() видели в нем какое-то приемущество. К тому же, разношерстность ядер сглаживают библиотеки.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #6 : 25-06-2003 16:36 » 

Вообще - вот что яч бы хотел - это прфессиональные разделы по Юниксу, со статьями...
У нас пока только QNX есть три статьи - может из тех кто знает сделает такое вместе с кем либо - уж очень много интересного мы теряем...
Записан

А птичку нашу прошу не обижать!!!
Olej
Гость
« Ответ #7 : 25-06-2003 21:49 » 

Цитата: RXL
POSIX тоже не идеал и в нем бывают противоречия и нелогичности.


Вот так не нужно говорить: любая UNIX-like система считается таковой только в той мере, в какой она соответствует POSIX. POSIX - развивается, дополняется, появляются новые книги и расширения, на счёт противоречий ... явных там нет, а в деталях - появляются, но их исправляют. А вот "нелогичности" ... могут быть, но если ваша OS хочет считаться UNIX-like - извольте реализовать нелогичности POSIX.

Цитата
BSD, не в обиду будет сказано, мне напоминает учебные полигон (а ведь, практически, так и было 20-25 лет назад), на котором студенты (правда, способные) тренеровались в создании новых API. И не всегда удачно, удобно и логично. Т.ч., я не считаю что, если в Linux-е некоторые syscall-ы работают иначе, что это недостаток. Возможно создатели clone() видели в нем какое-то приемущество. К тому же, разношерстность ядер сглаживают библиотеки.


1.Так было, но сейчас - далеко не так... вместо 1-го "BSD" - целая линия BSD-подобных OS: FreeBSD, NetBSD (и именно в ней "обкатываются" все сетевые новшества), QNX, ... да и Linux из линии BSD ... ну не SysV же? А других семейств, линий UNIX - нет.

2.А на счёт "считать", так считать можно всё что угодно ... но массово принято считать, что POSIX-отличная реализация Linux-thread - это МИНУС. Как раз большой (самый большой) плюс Linux - это то, что они смогли сдержать естественное желание сделать "лучшую OS", а шли, и ВО ВСЁМ повторяли UNIX (т.е. его "родовые" черты).
Записан
Olej
Гость
« Ответ #8 : 25-06-2003 21:53 » 

Цитата: Гром
Вообще - вот что яч бы хотел - это прфессиональные разделы по Юниксу, со статьями...
У нас пока только QNX есть три статьи - может из тех кто знает сделает такое вместе с кем либо - уж очень много интересного мы теряем...


... сегодня только "4-ю" отослал Ага - итого "уже есть 4", кстати, она совсем не по QNX (или "почти совсем не по QNX ") а по UNIX "вообще". Кстати, я не пойму, почему только 3? У меня есть (из более-менее стареньких) существенно больша - я их что, не посылал?
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #9 : 25-06-2003 22:04 » new

Надо посмотреть я помню QNX и еще одну - т.е. я ошибся - 5 штук. Надо пересмотреть и свести весь сайт в единую систему.
Чем я пытаюсь занятся - но сначала доделаю форум.
Записан

А птичку нашу прошу не обижать!!!
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 26-06-2003 15:20 » 

2Olej:
Я говорил о том, что большое число различных API не есть достоинство.
Следую идеалогии unix их наоборот должно быть меньше и проще.
Из простого сделать сложное проще чем из сложного делать простое.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
DeltaFlight
Гость
« Ответ #11 : 26-10-2003 19:35 » 

Цитата: Olej
pthread_create() делается через clone() (это и есть то "через задницу"), т.е. в точности тем механизмом, которым и fork... Об этом писано - переписано ... везде. И Linux-community брались это переправить в "последующих релизах"...

Так реализованный механизм thread просто НЕ МОЖЕТ в точности вести себя в соответствии с требованиями POSIX и особенно POSIX 1003.b - да и просто по количеству API относящихся к thread функций в Linux сейчас В РАЗЫ! меньше, чем в родственных ему BSD-like.


Уже больше года как сделали. В 2.5 NPTL. В частности, у всех потоков одного процесса один pid, правильно обрабатываются сигналы, и т.п.
А clone() теперь не так страшен, как его малевали раньше Улыбаюсь
А по поводу "В РАЗЫ" - зачем другие API, если уже реализовали POSIX? То, что есть в BSD и Solaris - было сделано до принятия стандарта и теперь большой ценности не имеет.
Записан
Anonymous
Гость
« Ответ #12 : 19-11-2003 18:10 » 

Цитата: DeltaFlight
Цитата: Olej
pthread_create() делается через clone() (это и есть то "через задницу"), т.е. в точности тем механизмом, которым и fork... Об этом писано - переписано ... везде. И Linux-community брались это переправить в "последующих релизах"...
[list=]
Цитата
Так реализованный механизм thread просто НЕ МОЖЕТ в точности вести себя в соответствии с
требованиями POSIX и особенно POSIX 1003.b - да и просто по количеству API относящихся к thread функций в Linux сейча
Код:
с В РАЗЫ! меньше, ч
ем в родственных ему BSD-like.
[/list]

http://Уже больше года как сделали. В 2.5 NPTL. В частности, у всех потоков одного процесса один pid, правильно обрабатываются сигналы, и т.п.
А clone() теперь не так страшен, как его малевали раньше Улыбаюсь
А по поводу "В РАЗЫ" - зачем другие API, если уже реализовали POSIX? То, что есть в BSD и Solaris - было сделано до принятия стандарта и теперь большой ценности не имеет.
[url][list=][/list][list=]




[/list]
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 19-11-2003 23:57 » 

Ну и что это за наррродное творчество :?:
Уважаемый Гость, если тут, помимо цитирования есть другие мысли, то напиши это еще раз - тут ни чего не понятно - где старое, где новое. Пользуйся предпросмотром - при использовании форматирования очень полезно. А этот пост придется через некоторое время удалить...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
DarkK (Guest)
Гость
« Ответ #14 : 15-01-2004 11:11 » 

Вопрос.... а как заснуть на минимальное вемя, передав упавление другому потоку/процессу?
в Win Sleep(0) а тут?
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 15-01-2004 15:07 » 

DarkK (Guest), во-первых, лучше это вынести в отдельную тему - открой новую. Во-вторых, начни с другого конца - какая задача стоит?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Olej
Гость
« Ответ #16 : 21-01-2004 13:30 » 

Цитата: DarkK (Guest)
Вопрос.... а как заснуть на минимальное вемя, передав упавление другому потоку/процессу?
в Win Sleep(0) а тут?


sleep(), nanosleep(), delay() - это всё по POSIX пассивные ожидания, естественно с решедулированием (nanosleep() в Linux работает несколько по-другому при малых задержках - но это проблема Linux, а не POSIX, правда?).
sched_yeld() - прямое решедулирование без каких-либо временных интервалов.

alarm() - хороший и простой вариант, использующий сигналы.

Вообще, в UNIX/POSIX такие вещи чаще (в более сложных случаях) делаются через создание таймера ядра.
Записан
Kern
Гость
« Ответ #17 : 02-02-2004 13:08 » 

Olej, sched_yeld() - я не нашел в FreeBSD а вот знаю такую:
Цитата

void pthread_yield(void)
          Allows the scheduler to run another thread instead of
          the current one.


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

если использовать только эту функцию (например есть 10 thread-ов и каждый что-то считает и переодически вызывает pthread_yield()) то процессор все равно будет использоваться на 100%... хотя другим прогам это в общем-то не мешает Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines