alteest
Гость
|
|
« : 23-06-2003 10:34 » |
|
в общем то такая вешчь: в RedHat 7.2 - юзаю pthread - все нормально. пытюсь откомпилить на фрюхе (4.8) - так вот там выдает ошибку. ладно, качаю исходники другой проги - пытаюсь их откомпилить и при ./configure выдает - "cheking for pthread_create .......... -lptherad (cashing) no" (ну или что-тот около того), т.е. не находит на фрюхе pthread-овских библиотек?
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #1 : 23-06-2003 14:45 » |
|
Надо пологать что, или configure не там искал заголовки, или ты их просто не поставил. Попробуй поискать испытанным методом: grep -d recurse 'pthread_create' /usr/include
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Olej
Гость
|
|
« Ответ #2 : 24-06-2003 15:08 » |
|
в общем то такая вешчь: в 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 » |
|
насчет 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
Пол:
|
|
« Ответ #5 : 25-06-2003 16:32 » |
|
POSIX тоже не идеал и в нем бывают противоречия и нелогичности. BSD, не в обиду будет сказано, мне напоминает учебные полигон (а ведь, практически, так и было 20-25 лет назад), на котором студенты (правда, способные) тренеровались в создании новых API. И не всегда удачно, удобно и логично. Т.ч., я не считаю что, если в Linux-е некоторые syscall-ы работают иначе, что это недостаток. Возможно создатели clone() видели в нем какое-то приемущество. К тому же, разношерстность ядер сглаживают библиотеки.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #6 : 25-06-2003 16:36 » |
|
Вообще - вот что яч бы хотел - это прфессиональные разделы по Юниксу, со статьями... У нас пока только QNX есть три статьи - может из тех кто знает сделает такое вместе с кем либо - уж очень много интересного мы теряем...
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
Olej
Гость
|
|
« Ответ #7 : 25-06-2003 21:49 » |
|
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? У меня есть (из более-менее стареньких) существенно больша - я их что, не посылал?
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #9 : 25-06-2003 22:04 » |
|
Надо посмотреть я помню QNX и еще одну - т.е. я ошибся - 5 штук. Надо пересмотреть и свести весь сайт в единую систему. Чем я пытаюсь занятся - но сначала доделаю форум.
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #10 : 26-06-2003 15:20 » |
|
2Olej: Я говорил о том, что большое число различных API не есть достоинство. Следую идеалогии unix их наоборот должно быть меньше и проще. Из простого сделать сложное проще чем из сложного делать простое.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
DeltaFlight
Гость
|
|
« Ответ #11 : 26-10-2003 19:35 » |
|
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 » |
|
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
Пол:
|
|
« Ответ #13 : 19-11-2003 23:57 » |
|
Ну и что это за наррродное творчество :?: Уважаемый Гость, если тут, помимо цитирования есть другие мысли, то напиши это еще раз - тут ни чего не понятно - где старое, где новое. Пользуйся предпросмотром - при использовании форматирования очень полезно. А этот пост придется через некоторое время удалить...
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
DarkK (Guest)
Гость
|
|
« Ответ #14 : 15-01-2004 11:11 » |
|
Вопрос.... а как заснуть на минимальное вемя, передав упавление другому потоку/процессу? в Win Sleep(0) а тут?
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #15 : 15-01-2004 15:07 » |
|
DarkK (Guest), во-первых, лучше это вынести в отдельную тему - открой новую. Во-вторых, начни с другого конца - какая задача стоит?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Olej
Гость
|
|
« Ответ #16 : 21-01-2004 13:30 » |
|
Вопрос.... а как заснуть на минимальное вемя, передав упавление другому потоку/процессу? в 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%... хотя другим прогам это в общем-то не мешает
|
|
|
Записан
|
|
|
|
|