Кіріспе

Прототақыр – бір мезгілде бағдарламалау үшін төмен шығынды механизм. Прототақырлар стексіз, жеңіл тақырлар немесе корутиналар ретінде жұмыс істейді, минималды жадты (бір байт шамасында) пайдаланып, арзан бағамен тоқтату контекстін қамтамасыз етеді. Прототақырлар кооперативтік көп тапсырмалылық деп аталатын алдын ала тоқтатылмайтын бір мезгілдестіктің түрін іске асыру үшін қолданылады, сондықтан басқа тақырға өткен кезде контекст ауысуы болмайды. Прототақырдың ішінде, иілгіштік Дафф құрылғысын тақыр функциясының ішінде және ауысу операторында қолданылатын сыртқы айнымалы арқылы жүзеге асырылады. Бұл басқа функция шақырылғанда тоқтаудан (қайта бастаудан) секіруге мүмкіндік береді. Тақырларды тоқтату үшін, осы тоқтатулар шартты түрде қорғалуы мүмкін, сондықтан егер қорғау шарты орындалмаса, бірдей функцияға кезекті шақырулар тоқтатылады. Прототақырлардың басқа корутиналар немесе нақты тақырлардың іске асырылуынан ерекшелігі – олардың стексіз болуы. Бұл әдістің артықшылықтары мен кемшіліктері бар. Кемшілігі – прототақырдың ішіндегі жергілікті айнымалылардың мәндерін басқа контекстке өткен кезде сақтап қалуына сенуге болмайды. Олар статикалық немесе сыртқы, көбінесе жаһандық айнымалыларды пайдалану арқылы күйін сақтауы керек. Артықшылығы – олар өте жеңіл, сондықтан басқа шешімдер тиімсіз немесе қолайсыз болған шағын микробасқарушылар сияқты жады шектеулі жүйелерде пайдалы. Том Дафф, Дафф құрылғысының авторы, әдістің кемшіліктері туралы былай деді: "бұзуды басқаратын күйдік машиналар үшін ұқсас амал бар, оны сипаттауға тым қорқынышты. [ ] Мен оны жалпы мақсаттағы корутинаны іске асыру деп ойлаған жоқпын, өйткені корутинаны бірнеше рет бір уақытта іске қосу оңай емес, және осы әдіспен корутиналар жоғары деңгейдегі реттіліктен басқа жерде бақылауды беруге мүмкіндік бермейді. Қарапайым ассемблер тіліндегі стек ауыстыру кітапханасы осы екеуін де іске асыруға мүмкіндік береді". Прототақыр тұжырымын Адам Дункельс және Оливер Шмидт Саймон Татам мен Том Даффтың бұрынғы жұмыстарына негіздеп жасады.