Допутин дегеніміз не?

Допутин дегеніміз не? Олар параллельділікпен қалай байланысты?

129
16 февр. yesraaj 16 ақпанда орнатылған . 2009-02-16 18:36 '09 at 18:36 2009-02-16 18:36
@ 6 жауаптар

Сорутиналар мен параллельділік көбінесе ортогоналды болып табылады. Quorting - жалпы басқару құрылымы, ол ағынды басқару екі түрлі кіші бағдарламалар арасында кері қайтарылмайды.

Python-дағы «кірістілік» шығу жақсы мысал. Ол сопроводы жасайды. «Шығу» кездессе, функцияның ағымдық күйі сақталады және басқару функциясы шақыру функциясына қайтарылады. Қоңырау шалушы функцияны орындау функциясын қайтаратын функцияға қайта жібере алады және оның күйі «кіріс» кездесетін жерге қалпына келтіріледі және орындалу жалғасады.

93
16 февр. 16 ақпан күні пайдаланушы21714 берген жауап 2009-02-16 18:46 '09 в 18:46 2009-02-16 18:46

Бағдарламалаудан Луа , « Coroutines »:

Корутин ұқсастығы бар (многопоточность мағынасында): бұл өз сызығымен орындалатын сызық, өз жергілікті айнымалы және өз нұсқаулық көрсеткіші; бірақ ол басқа айнымалылармен және негізінен басқа нәрселермен айналысады. Аттар мен супрутина арасындағы негізгі айырмашылық мынада, тұжырымдамалық (немесе мультипроцессорлық машинада), жіптермен бірге параллель бірнеше ағындарды іске қосады. Екінші жағынан, сорутиналар бірлесіп жұмыс істейді: кез-келген уақытта, сопрограммамен бірге бағдарлама оның біреуін ғана бастайды және бұл орындалатын бағдарлама оның орындалуын тоқтата тұруды талап еткенде ғана тоқтатады.

Мәселе мынада: Coroutines «бірлескен». Тіпті көп-ядролық жүйеде тіпті біреуі кез-келген уақытта жұмыс істейді (бірақ бір қатар жіптер параллельде жұмыс істей алады). Қоспалардың арасында ешқандай басымдық жоқ, орындалатын корутину нақты орындаудан бас тартуы керек.

border=0

Бір concurrency , сіз Rob Pike слайдына қоңырау шала аласыз:

Теңестіру - бұл дербес есептеулердің құрамы.

Осылайша, А ауруының орындалуы кезінде ол бақылауды ауысады B. Содан кейін біраз уақыт өткеннен кейін B корутинасы корутинаға ауысады. Қосымдықтар арасында тәуелділік болғандықтан және олар біртектілікте жұмыс істеуге тиіс, сондықтан екі корутиналар бір мезгілде емес .

44
01 июля '15 в 6:11 2015-07-01 06:11 жауапты Нан Сяо 1 шілдеде сағат 06 :11-да жазады 2015-07-01 06:11

Сорутин кіші / ағындарға ұқсас. Айырмашылық: қоңырау шалушы кіші / ағындарды шақырады, ол ешқашан қоңырау шалушының функциясына оралмайды. Бірақ, сопровождение шақырушы қайтарады бірнеше кодтық үзінділерді орындағаннан кейін, ол өз кодын өз орындауға мүмкіндік береді және координаттар нүктесіне оралды, онда ол орындалуын тоқтатты және одан әрі жалғастыруда. яғни. Сопутиндерде бірнеше кіру және шығу нүктелері бар.

10
21 июня '16 в 19:35 2016-06-21 19:35 Жауап 21-маусымда сағат 19: 35- те, 2016-06-21 19:35

Екінші жағынан, python кітапханасында, gevent - ағындарды жасау және жоюдың gevent желілік сұраулар сияқты жіп сияқты функцияларды қамтамасыз ететін, gevent негізделген желі кітапханасы. Қолданылатын greenlet кітапханасы - greenlet .

2
12 апр. 12-ші ақпан күні Джозеф жауап береді 2017-04-12 07:01 '17 at 7:01 2017-04-12 07:01
  • Coroutines - Котлин тіліндегі керемет мүмкіндіктер
  • Coroutines - асинхронды, бұғатталмаған кодты жазудың жаңа әдісі (және тағы басқа)
  • Coroutine - бұл жеңіл жіп. Жеңіл жіп, ол өз жіпін көрсетпейді дегенді білдіреді, сондықтан ол процессорды контекстті қосуды талап етпейді, сондықтан олар жылдамырақ болады.
  • ол енгізілген ағыны көрсетпейді
  • Сапарлар мен ағындар көп міндетті. Бірақ айырмашылығы, бұл ағындарды ОС және пайдаланушылардың схемалары басқарады.

Негізінде, екі түрі бар Coroutines:

  • Stackless
  • Бекітуші

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

Бұл сопрограммаларды іске қосу функциялары:

 launch{} async{} 

Сіз осында көбірек біле аласыз:

https://www.kotlindevelopment.com/deep-dive-coroutines/

https://blog.mindorks.com/what-are-coroutines-in-kotlin-bf4fecd476e9

1
07 окт. жауап Dhaval Jivani 07 қазан 2017-10-07 16:38 '17 at 4:38 pm 2017-10-07 16:38

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

Бұл жауапты өте пайдалы деп таптым:

https://dev.to/thibmaek/explain-coroutines-like-im-five-2d9

Idan Arie-дан дәйексөз келтіруге болады:

Сіздің әңгімеңізді құру үшін, мен мынаны айта аламын:

Сіз мультфильмді көруді бастайсыз, бірақ бұл кіріспе. Жазбаға енудің орнына ойынға ауысып, онлайн лоббиді енгізесіз, бірақ бұл үшін 3 ойыншы қажет, тек сіз және сіздің апаңыз бар. Басқа ойыншыны сізді қосуға шақырудың орнына, үй тапсырмасына ауысыңыз және бірінші сұраққа жауап беріңіз. Екінші сұрақта сіз қарауға болатын YouTube бейнесіне сілтеме бар. Сіз оны ашасыз - ол жүктей бастайды. Оны жүктеудің орнына мультфильмге қосылады. Жазу аяқталды, сондықтан сіз көре аласыз. Қазір жарнама бар, бірақ сол уақытта үшінші ойыншы қосылды, сондықтан сіз ойынға ауысасыз. Тағыда басқа...

Бұл идеяның мақсаты - бірден сіз бәрін бірден істеп жатқандай көріну үшін тез арада тапсырмаларды ауыстырып қана қоймайсыз. Сіз өзіңізге тікелей назар аударуды қажет ететін басқа да нәрселерді жасау үшін бірдеңе күтетін уақытты пайдаланасыз.

Сілтемені тексеріңіз, барлығынан дәйек алмаймын, әлдеқайда көп.

0
07 дек. жауап 07 желтоқсан күні mr1031011 беріледі . 2018-12-07 08:21 '18 сағат 20:21, 2018-12-07 08:21

қатысты басқа сұрақтар немесе мәселе қойыңыз