Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
в линуксе вообще есть такое понятие как нити? 19.04.03 02:17
Автор: vh <Дмитрий> Статус: Member
|
и если да, то как их программить?
спасибо
|
|
в линуксе вообще есть такое понятие как нити? 26.04.03 13:20
Автор: L Статус: Незарегистрированный пользователь
|
Ты б решил, что ты действительно хочешь узнать.
В частности "нити как в Windows" - это чего такое? По каким параметрам ты их сравнивать решил?
Если просто для самообразования (без глупых попыток сравнения), то тебе уж посоветовали. Курить для начала posix threads и man clone.
|
| |
объясняю... 26.04.03 15:22
Автор: vh <Дмитрий> Статус: Member
|
> Ты б решил, что ты действительно хочешь узнать. как устроен механизм нитей на уровне ядра (и какая философия их использования)
> > В частности "нити как в Windows" - это чего такое? По каким > параметрам ты их сравнивать решил? В моем понимани "нити как в Windows" это означает: есть процесс...сам по себе пустой и ничего не значащий...в каждом процессе должна быть хотя бы одна нить которая по сути есть код и стек. Все логично.
Вообщем на мой взгляд такой механизм нитей есть очень мощный инструмент для программирования (даже если не брать их реальную реализацию в ОС от MS). Т.е. понятно как и главное зачем (целесообразность) их использовать.
Хочется понять тоже самое относительно системы Юникс.
Надеюсь теперь я понятно объяснился.
Чтобы постичь целесообразность надо знать их внутренний механизм.
В том же самом Робачевском этому вопросу не уделяется внимания.
Но все еще есть надежда, что юниксовские нити для чего нибудь, а все же могут быть полезны.
> > Если просто для самообразования (без глупых попыток > сравнения), то тебе уж посоветовали. Курить для начала > posix threads и man clone.
в принципе Urix привел довольно много инфы и линков . так что если это серьезно посмотреть, то наверное действительно станет все на свои места...но пока мне ужасно влом :)
|
|
конечно есть :) 21.04.03 08:55
Автор: PS <PS> Статус: Elderman
|
Если ты переводишь thread как "нить" (правилный перевод - "поток"), то есть. Если ты имеешь в виду fibers, то не знаю ;)
Внутреняя реализация потоков нас не интересует. Так ?
А use case можно увидеть:
man pthread_create
man pthread_join
man pthread_exit
Все ф-ии определяются в <pthread.h>
При линковке указываешь -lpthread
|
| |
а все-таки каков механизм? 22.04.03 23:01
Автор: vh <Дмитрий> Статус: Member Отредактировано 22.04.03 23:17 Количество правок: 2
|
> Если ты переводишь thread как "нить" (правилный перевод - > "поток"), то есть. Если ты имеешь в виду fibers, то не знаю > ;) > > Внутреняя реализация потоков нас не интересует. Так ? > А use case можно увидеть: > man pthread_create > man pthread_join > man pthread_exit > > Все ф-ии определяются в <pthread.h> > При линковке указываешь -lpthread
большое спасибо за наводку!
Внутренняя реализация как раз очень интересует ( являются ли они частью ядра ). Ведь в принципе их можно и самому абстрагировать на основе процессов. только толку то...
Вопрос ставлю так: есть ли в чистой системе юникс понятие нитей?
а ты не мог бы чтонить будь рассказать о fibers (что это такое)
санкс
|
| | |
Стандарт posix (если его считать "чистым" unix :) описывает так называемые posix threads (pthreads), о них, собственно, и говорилось. 23.04.03 11:11
Автор: Ktirf <Æ Rusakov> Статус: Elderman
|
> Внутренняя реализация как раз очень интересует ( являются > ли они частью ядра ). Ведь в принципе их можно и самому > абстрагировать на основе процессов. только толку то... Вообще конечно, зависит от реализации :) Но насколько я понимаю, поскольку POSIX - это набор требований, а не конкретная реализация, то достаточно иметь интерфейс на уровне системных вызовов или вызовов соответствующей библиотеки, чтобы сказать, что нити в данной операционке можно сделать POSIX-нитями. Я просто к тому, что в Linux "POSIX-нити" и "не-POSIX-нити" с точки зрения системного вызова, реально порождающего нить, по-моему, не отличаются. Если я неправ, поправьте.
|
| |
еще 1 реализация 21.04.03 11:42
Автор: Eugene Статус: Незарегистрированный пользователь
|
> Внутреняя реализация потоков нас не интересует. Так ? > А use case можно увидеть: > man pthread_create > man pthread_join > man pthread_exit > > Все ф-ии определяются в <pthread.h> > При линковке указываешь -lpthread
NTPL
ftp://people.redhat.com/drepper/nptl/
|
|
в линуксе вообще есть такое понятие как нити? 19.04.03 03:15
Автор: alien <Андрей> Статус: Member
|
...
Нити, т. е. параллельно выполняемые части одной программы, в стандартной библиотеке поддержки многонитевых программ Linux реализованы просто как процессы, порожденные с указанием флага CLONE_VM, и с точки зрения ядра системы ничем не отличаются от любых других процессов. Однако в некоторых альтернативных реализациях многонитевых библиотек дело обстоит иначе.
Помимо процессов описанного выше вида бывают еще «ущербные», порождаемые с помощью функции kernel_thread для внутренних системных нужд. У них нет параметров командной строки, как правило, они не имеют открытых файлов и т. д. Поскольку, несмотря на свою ущербность, эти процессы все равно фигурируют в списке задач, в литературе иногда различают полноценные процессы, порожденные из «пространства пользователя» (userspace), и задачи, т. е. все процессы, включая внутренние процессы ядра.
...
http://www.osp.ru/pcworld/2000/06/054.htm
|
| |
другими словами, нитей, которые есть в Win, в юниксе нет :)... 19.04.03 07:02
Автор: vh <Дмитрий> Статус: Member Отредактировано 19.04.03 07:02 Количество правок: 1
|
|
| | |
Можно сказать, что ДА... 19.04.03 07:12
Автор: alien <Андрей> Статус: Member
|
На самом деле функциональность нитей Windows есть и в Linux, просто все устроено немного по другому - в Windows код выполняется в рамках нити, а процесс является всего лишь контейнером нитей, а в Linux код выполняется в рамках процесса.
Если я ошибаюсь, то пусть меня поправят...
|
|
|