У програмуванні волокно — особливо легковагова нить виконання. Подібно до нитей, волокна використовують спільний адресний простір: але (там де існує різниця) волокна використовують кооперативну багатозадачність, в той час як ниті покладаються на упереджувальну виштовхувальну багатозадачність. Ниті здебільшого залежать від планувальника задач, який призупиняє одну нить і дає виконуватися іншій нитці. Волокна ж самі передають управління іншим волокнам.
Волокна і співпроцедури
По суті, волокна описують ті самі концепції, що і співпроцедура. Різниця, якщо вона є, полягає в тому, що співпроцедури — це конструкції мовного рівня, форма управління потоком інструкцій, в той час як волокна — конструкції системного рівня, які виглядають як ниті, що не виконуються паралельно; взаємне переключення між волокнами виглядає як безадресний перехід між внутрішніми ділянками коду співпроцедур. Таке бачення є суперечним: волокна можуть розглядатися як реалізація співпроцедур, або ж як основа, на якій здійснюються співпроцедури.
Переваги і недоліки
Оскільки багатозадачність волокон базується на явному переключенні між волокнами, проблем безпеки тут менше, ніж загалом з планованими нитями. Конструкції синхронізації, що включають взаємні блокування і атомарні дії, не потрібні при написанні коду з волокнами, оскільки вони явно синхронізовані. Проте, багато бібліотек використовують волокна явно, наприклад, при виконанні неблокуючого вводу-виводу; тобто, на це треба звертати увагу, дотримуючись певних обережностей і читати документацію.
Непрямим недоліком волокон є те, що вони виконуються в контексті планованих ниток, що їх породили; проте, модель N:M, коли кількість ниток не перевищує кількості ядер процесора, може бути ефективнішою, ніж варіанти тільки з волокнами або тільки з нитями.
Підтримка операційних систем
Волокнам потрібна менша підтримка з боку операційної системи, ніж для ниток. Волокна підтримуються в багатьох сучасних системах Unix, що використовують бібліотечні функції getcontext(), setcontext() і swapcontext() з ucontext.h, як в .
У Microsoft Windows волокна створюються викликами ConvertThreadToFiber() і CreateFiber(). Виконання волокна, що "підвішене" в цей час, можливо поновити з будь-якої ниті. При створенні кожному волокну можна передавати вказівник на пам'ять, призначену для зберігання приватних даних, аналогічно до зберігання приватних даних ниток .
Див. також
Примітки
- . Архів оригіналу за 23 жовтня 2017. Процитовано 17 травня 2009.
- Implementing Coroutines for .NET by Wrapping the Unmanaged Fiber API [ 7 вересня 2008 у Wayback Machine.], Ajai Shankar,
- Fibers [ 6 квітня 2008 у Wayback Machine.], MSDN Library
Посилання
- GNU Portable threads [ 12 липня 2008 у Wayback Machine.]
- Portable Coroutine Library [ 23 вересня 2009 у Wayback Machine.] на Freshmeat
Це незавершена стаття про операційні системи. Ви можете проєкту, виправивши або дописавши її. |
Це незавершена стаття про програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
U programuvanni volokno osoblivo legkovagova nit vikonannya Podibno do nitej volokna vikoristovuyut spilnij adresnij prostir ale tam de isnuye riznicya volokna vikoristovuyut kooperativnu bagatozadachnist v toj chas yak niti pokladayutsya na uperedzhuvalnu vishtovhuvalnu bagatozadachnist Niti zdebilshogo zalezhat vid planuvalnika zadach yakij prizupinyaye odnu nit i daye vikonuvatisya inshij nitci Volokna zh sami peredayut upravlinnya inshim voloknam Volokna i spivproceduriPo suti volokna opisuyut ti sami koncepciyi sho i spivprocedura Riznicya yaksho vona ye polyagaye v tomu sho spivproceduri ce konstrukciyi movnogo rivnya forma upravlinnya potokom instrukcij v toj chas yak volokna konstrukciyi sistemnogo rivnya yaki viglyadayut yak niti sho ne vikonuyutsya paralelno vzayemne pereklyuchennya mizh voloknami viglyadaye yak bezadresnij perehid mizh vnutrishnimi dilyankami kodu spivprocedur Take bachennya ye superechnim volokna mozhut rozglyadatisya yak realizaciya spivprocedur abo zh yak osnova na yakij zdijsnyuyutsya spivproceduri Perevagi i nedolikiOskilki bagatozadachnist volokon bazuyetsya na yavnomu pereklyuchenni mizh voloknami problem bezpeki tut menshe nizh zagalom z planovanimi nityami Konstrukciyi sinhronizaciyi sho vklyuchayut vzayemni blokuvannya i atomarni diyi ne potribni pri napisanni kodu z voloknami oskilki voni yavno sinhronizovani Prote bagato bibliotek vikoristovuyut volokna yavno napriklad pri vikonanni neblokuyuchogo vvodu vivodu tobto na ce treba zvertati uvagu dotrimuyuchis pevnih oberezhnostej i chitati dokumentaciyu Nepryamim nedolikom volokon ye te sho voni vikonuyutsya v konteksti planovanih nitok sho yih porodili prote model N M koli kilkist nitok ne perevishuye kilkosti yader procesora mozhe buti efektivnishoyu nizh varianti tilki z voloknami abo tilki z nityami Pidtrimka operacijnih sistemVoloknam potribna mensha pidtrimka z boku operacijnoyi sistemi nizh dlya nitok Volokna pidtrimuyutsya v bagatoh suchasnih sistemah Unix sho vikoristovuyut bibliotechni funkciyi getcontext setcontext i swapcontext z ucontext h yak v U Microsoft Windows volokna stvoryuyutsya viklikami ConvertThreadToFiber i CreateFiber Vikonannya volokna sho pidvishene v cej chas mozhlivo ponoviti z bud yakoyi niti Pri stvorenni kozhnomu voloknu mozhna peredavati vkazivnik na pam yat priznachenu dlya zberigannya privatnih danih analogichno do zberigannya privatnih danih nitok Div takozhKooperativna bagatozadachnistPrimitki Arhiv originalu za 23 zhovtnya 2017 Procitovano 17 travnya 2009 Implementing Coroutines for NET by Wrapping the Unmanaged Fiber API 7 veresnya 2008 u Wayback Machine Ajai Shankar Fibers 6 kvitnya 2008 u Wayback Machine MSDN LibraryPosilannyaGNU Portable threads 12 lipnya 2008 u Wayback Machine Portable Coroutine Library 23 veresnya 2009 u Wayback Machine na Freshmeat Ce nezavershena stattya pro operacijni sistemi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Ce nezavershena stattya pro programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi