Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Nic Гость
|
Добавлено: Пн Апр 08 2002 15:36 Заголовок сообщения: Что такое нити? |
|
|
Подскажите что такое нити и для чего они нужны. Заранее спасибо! |
|
Вернуться к началу |
|
|
Adil Гость
|
Добавлено: Пн Апр 08 2002 16:16 Заголовок сообщения: Re: Что такое нити? |
|
|
Нить (thread), или поток (не путать со stream) - раздельно выполняемые задачи системы. В однопроцессорной системе процессор может разделять ресурсы (время, память и т.д.) между различными потоками - получается многозадачная система. В многопроцессорной системе потоки могут разделяться между процессорами. Одно приложение может включать несколько потоков (multithread application). |
|
Вернуться к началу |
|
|
ilyasov Гость
|
Добавлено: Пн Апр 08 2002 18:30 Заголовок сообщения: Не совсем |
|
|
Есть понятие процесса -отдельно выполняемой программной единицы. Многозадачные системы, как правило, оперируют именно с процессами. Однако, у процессов есть сложности в части совместного доступа к данным в памяти. Два разных процесса (без дополнительных ухищрений) не могут получить доступ к адресному пространству друг друга. Нити же -один из способов организации параллельного выполнения двух и более потоков команд при совместном доступе к одним и тем же данным. В некотором смысле, нить -ущербный процесс. Следует также иметь ввиду, что не во всех системах возможна реализация многонитевой программы (даже если система и многозадачная). |
|
Вернуться к началу |
|
|
яяя Гость
|
Добавлено: Пн Апр 08 2002 19:28 Заголовок сообщения: процесс без нитей не бывает (-) |
|
|
- |
|
Вернуться к началу |
|
|
ilyasov Гость
|
Добавлено: Вт Апр 09 2002 12:47 Заголовок сообщения: Интересная мысль... В Windows может быть, но не в других системах |
|
|
В некоторых системах понятия нитей вообще не существует. В различных реализациях UNIX понятие процесс вообще никак не связано с нитями как таковыми (изначально этого понятия даже не существовало). Как я ранее отмечал, реализация нитей в каждой системе происходит по-своему. Для нормального параллелизма при многонитевой программе система должна уметь дипетчеризовать отдельные нити (а не процессы). Таковая поддержка должна существовать на уровне ядра, что не везде имеет место. Поэтому то для FreeBSD (кажется в linuxthreads) используется вызов fork, порождающий новый процесс. |
|
Вернуться к началу |
|
|
яяя Гость
|
Добавлено: Вт Апр 09 2002 16:26 Заголовок сообщения: это лишь разновидности реализации многозадачности. Если есть нити, то в процессе должна быть хотя бы одна нить, ибо контекст вы |
|
|
- |
|
Вернуться к началу |
|
|
ilyasov Гость
|
Добавлено: Вт Апр 09 2002 17:45 Заголовок сообщения: М-да..., сильно сказано |
|
|
При создании UNIX в качестве единственного объекта, используемого в механизме реализации многозадачной работы, было введено понятие процесса. Таковым являлась любая программа, которая была изолирована по адресному пространству от других однотипных объектов и рассматривалась с точки зрения системы как целый и неделимый объект. Все действия по запуску и остановке, диспетчеризации проводились именно с процессом, ни о каких нитях речи не было. Для реализации нитей система должна производить действия по диспетчеризации уже не над процессами, а над нитями, т.е. в такой системе минимальным объектом диспетчеризации будет нить, а не процесс. Утверждение же о том, что при наличии нитей в процессе должна быть хотя бы одна нить тривиально и никак не влияет на утверждение о том, что есть системы в которых невозможно породить несколько потоков команд при общих данных. Исторически UNIX развивалась как раз из положения о изолированности процессов. |
|
Вернуться к началу |
|
|
|