LINUX.ORG.RU

Потому что нужно пользоваться поиском на лоре.

anonymous
()

Обсуждалось чуть ли не в этом месяце.

anonymous
()

Нет, exit() в главном треде _приводит_ к завершению всего процесса.

Так по крайней мере должно происходить в NPTL (и происходит).

Насчет LinuxThreads не знаю и в общем-то знать не хочу. Если ты их
используешь - ты без сомнения Сам Себе Злой Буратино.

Кроме того (при любых threads) возможен тривиальный deadlock, например
в C++ программе при вызовах деструкторов статических объектов.

В общем цепляйся к процессу gdb и смотри, что происходит.

Onanim
()
Ответ на: комментарий от Onanim

>Насчет LinuxThreads не знаю и в общем-то знать не хочу. Если ты их используешь - ты без сомнения Сам Себе Злой Буратино.

не спорю но как заставить клиента пропатчить ядро на тему NPTL???

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv

> не спорю но как заставить клиента пропатчить ядро на тему NPTL???

Упаси боже! Не надо ничего патчить! Надо взять _нормальный_,
ориентированный на коммерческое использование дистрибутив.
Ну какие могут быть причины не использовать SUSE (хоть SLES, хоть
Professional), или RedHat? Можно бесплатно, можно за деньги. Можно
с платным support'ом, для кого это важно.
Хорошо, не хотите "большой" дистрибутив - так тот же Slackware
предлагает (опционально) 2.6 ядро. А, и еше Ubuntu.

Не, могут быть случаи, когда сменить платформу нельзя, скажем в случае
какого-то embedded linux варианта. Или closed-source драйвер Самой
Главной Железки есть только под единственную версию ядря.

Но что-то мне кажется, что у тебя не тот случай.

Onanim
()
Ответ на: комментарий от Onanim

>> не спорю но как заставить клиента пропатчить ядро на тему NPTL???

> Упаси боже! Не надо ничего патчить! Надо взять _нормальный_, ориентированный на коммерческое использование дистрибутив.

предполагается пользовать на уже существующих рабочих местах с ядром 2.4 и не обязательно RH.

cvv ★★★★★
() автор топика
Ответ на: комментарий от Onanim

Onanim:

> Надо взять _нормальный_, ориентированный на коммерческое использование дистрибутив.

У меня стоит на 32х-головом сервере 2.4. Там несколько юзеров (и я в т.ч.) гоняют задачи месяцами.

И как я его должен обновлять? Ближайшая остановка не планируется вообще, а если и планировалась бы, то вряд ли я стал бы обновляться (ибо РАБОТАЕТ!, да и за новый дистрибутив придется выложить под $1000, поскольку там присутствует проприетарщина).

Die-Hard ★★★★★
()
Ответ на: комментарий от Onanim

> Нет, exit() в главном треде _приводит_ к завершению всего процесса.

ну вот, опять. ну ведь с вами же об этом говорили.

вы о каком exit() говорили? если о sys_exit(), то
_не_ приводит. если говорить о реализации exit()
в libc-не-помню-какая-версия, то exit() означает
sys_exit_group(), и завершает весь процесс при
вызове из _любого_ потока, а не только главного.

idle ★★★★★
()
Ответ на: комментарий от Die-Hard

> У меня стоит на 32х-головом сервере 2.4. Там несколько юзеров (и я в
> т.ч.) гоняют задачи месяцами.
>
> И как я его должен обновлять? Ближайшая остановка не планируется
> вообще, а если и планировалась бы, то вряд ли я стал бы обновляться
> (ибо РАБОТАЕТ!, да и за новый дистрибутив придется выложить под
> $1000, поскольку там присутствует проприетарщина).

Хммм... ты не понял :-( Или я недостаточно ясно выразился.

Я не против дистрибутива на 2.4. Если на нем устойчиво работает важный
для тебя софт, то зачем обновлять? Он может жить еще годами.

Но разрабатывать _новые_ applications с multithreading (как это делает
cvv, судя по его вопросам) на 2.4 неразумно. Надо понимать, что ты
отказываешься от POSIX Threads и от POSIX RealTime Extensions типа
POSIX message queues и semaphores. Если тебе все это добро не надо,
то 2.4 ничем не хуже 2.6. Если надо - то должны быть очень веские
причины, чтобы трахаться с 2.4.

Onanim
()
Ответ на: комментарий от Onanim

Onanim:

> Но разрабатывать _новые_ applications с multithreading (как это делает cvv, судя по его вопросам) на 2.4 неразумно.

Дык, у меня как раз та самая ситуация!

Есть сервак, будет жить много лет, 2.4 (кстати, оно меня достало отсутствием нормальной поддержки NUMA!). И я под эту штуку девелоплю. (заодно и юзаю, что надевелопил, и рулю ею до кучи).

Die-Hard ★★★★★
()
Ответ на: комментарий от idle

> > Нет, exit() в главном треде _приводит_ к завершению всего процесса.

> ну вот, опять. ну ведь с вами же об этом говорили.

> вы о каком exit() говорили? если о sys_exit(), то
> _не_ приводит. если говорить о реализации exit()
> в libc-не-помню-какая-версия, то exit() означает
> sys_exit_group(), и завершает весь процесс при
> вызове из _любого_ потока, а не только главного.

:-)))
Мне очень стыдно, но должен признаться, что меня не интересуют
детали реализации exit в Linux. Я не знаю, что такое sys_exit.
Если я говорю exit, _Exit, _exit или pthread_exit то я естественно
подразумеваю соответствующую функцию ISO C и/или POSIX/SUS и
ожидаю от нее семантики, определенной стандартом (или по крайней
мере описанной в документации конкретной реализации).
Для меня, как Unix application programmer'а это как-бы само собой
разумеется. С чего бы это мне вызывать sys_exit? :-/

Да, и я с вами полностью согласен: вызов exit() из _любого_
потока завершает процесс (слово "главном", как и все предложение
просто скопировано из исходного вопроса, а точнее из subj настоящего
топика).

Удачи в kernel hacking'е ;-)

HTH

Onanim
()
Ответ на: комментарий от Die-Hard

> Есть сервак, будет жить много лет, 2.4 (кстати, оно меня достало
> отсутствием нормальной поддержки NUMA!). И я под эту штуку
> девелоплю. (заодно и юзаю, что надевелопил, и рулю ею до кучи).

Ну да... случаи разные бывают ;-)
Мы вот тоже до сих пор Solaris 2.6 (SPARC) поддерживаем,
работает, жрать не просит. И главное - билдишь софтину на 2.6
а она потом работает на более поздних Solaris без проблем :-)

Onanim
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.