Талшық (информатика) - Fiber (computer science)

Жылы Информатика, а талшық әсіресе жеңіл орындау ағыны.

Жіптер сияқты, талшықтар да бөліседі мекенжай кеңістігі. Алайда, талшықтар қолданылады көпжақты ынтымақтастық жіптер қолданылады алдын-ала көп тапсырма беру. Ағындар көбінесе бос емес ағынды алдын-алу және басқа ағынды жалғастыру үшін ядро ​​ағынының жоспарлаушысына байланысты болады; талшықтар орындау кезінде басқа талшықты іске қосу үшін өздерін береді.

Талшықтар мен коротиндер

Талшықтар сол тұжырымдаманы сипаттайды коруотиндер. Айырмашылық, егер бар болса, коруотиндер - тілдік деңгей құрылымы, формасы басқару ағыны, ал талшықтар жүйелік деңгей құрылымы болып табылады, бір уақытта жұмыс істемейтін жіптер ретінде қарастырылады. Екі тұжырымдаманың қайсысының басымдығы бар екендігі даулы: талшықтар коруотиндерді іске асыру ретінде қарастырылуы мүмкін,[1] немесе коруотиндерді жүзеге асыратын субстрат ретінде.[2]

Артылықшылықтар мен кемшіліктер

Талшықтар бірлесіп жұмыс істейтіндіктен, жіптің қауіпсіздігі алдын-ала жоспарланған ағындармен және синхрондау құрылымдарымен салыстырғанда аз мәселе спинлоктар және атомдық операциялар талшықты кодты жазу кезінде қажет емес, өйткені олар жанама синхрондалған. Дегенмен, көптеген кітапханалар талшықтарды жүргізу әдісі ретінде жасырын түрде береді блоктаусыз енгізу-шығару; сондықтан кейбір сақтық пен құжаттаманы оқуға кеңес беріледі. Кемшілігі - талшықтарды қолдана алмау мультипроцессорлы жіптерді қолданбай-ақ машиналар; дегенмен, M: N бұрандалы модель Процессордың өзектерінен гөрі алдын-ала жіптерсіз таза талшықтардан да, таза алдын-ала бұрандалардан да тиімді бола алады.

Кейбір серверлік бағдарламаларда талшықтар жұмсақ блоктау үшін пайдаланылады, бұл олардың бір ағынды ата-аналық бағдарламаларының жұмысын жалғастыруға мүмкіндік береді. Бұл дизайнда талшықтар көбіне енгізу-шығару үшін қолданылады, олар процессорды өңдеуді қажет етпейді. Бұл негізгі бағдарламаға не істеп жатқанын жалғастыруға мүмкіндік береді. Талшықтар бір ағынды негізгі бағдарламаға басқаруды береді, ал енгізу-шығару жұмысы аяқталғаннан кейін талшықтар тоқтаған жерінде жалғасады.

Операциялық жүйені қолдау

Аз қолдау операциялық жүйе жіптерге қарағанда талшықтарға қажет. Оларды заманауи жағдайда жүзеге асыруға болады Unix кітапхана функцияларын қолданатын жүйелер getcontext, setcontext және swapcontext жылы ucontext.h, сияқты GNU портативті жіптері немесе монтаждаушы ретінде күшейту. талшық.

Қосулы Microsoft Windows, көмегімен талшықтар жасалады ConvertThreadToFiber және CreateFiber қоңыраулар; қазіргі уақытта тоқтатылған талшық кез-келген жіпте қалпына келтірілуі мүмкін. Ұқсас талшықты-жергілікті сақтау орны жергілікті жад, айнымалылардың бірегей көшірмелерін жасау үшін қолданылуы мүмкін.[3]

Symbian ОЖ талшықтарға ұқсас тұжырымдаманы өзінің белсенді жоспарлағышында қолданды. Ан белсенді объект бірнеше асинхронды қоңыраулар аяқталғаннан кейін Белсенді жоспарлаушы орындайтын бір талшықтан тұрады. Бірнеше Белсенді объектілер орындалуды күтуі мүмкін (басымдылыққа негізделген) және әрқайсысы өзінің орындалу уақытын шектеуі керек.

Талшықтарды енгізу мысалдары

Талшықтарды амалдық жүйенің қолдауынсыз жүзеге асыруға болады, дегенмен кейбір операциялық жүйелер немесе кітапханалар оларға нақты қолдау көрсетеді.

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ Талшық класы
  2. ^ Шанкар, Ажай (қыркүйек 2003). «.NET үшін басқарылмайтын талшық API орау арқылы Coroutines енгізу». MSDN журналы. Microsoft. Архивтелген түпнұсқа 2003 жылғы 19 тамызда. Алынған 24 желтоқсан 2006. Бұл мақалада .NET Framework үшін коротиндерді Fiber API және C ++ үшін басқарылатын кеңейтімдерді қолдану арқылы қалай жүзеге асыруға болатындығы және оларды басқа .NET-үйлесімді тілдермен қалай оңай қолдануға болатындығы көрсетілген.
  3. ^ Талшықтар, MSDN кітапханасы
  4. ^ CreateFiber, MSDN

Сыртқы сілтемелер