Кіріспе
Процестерді алдын ала алмайтын компьютерлік көп тапсырмалылық Кооперативтік көп тапсырмалылық, сонымен қатар алдын ала емес көп тапсырмалылық деп аталады, бұл компьютерлік көп тапсырмалылықтың стилі, онда операциялық жүйе ешқашан жүретін процестен басқа процеске контекстті ауыстырмайды. Керісінше, бірнеше қолданбаны бір мезгілде орындау үшін процестер бақылауды мерзімді түрде немесе бос уақытта немесе логикалық түрде бұғатталған кезде ерікті түрде береді. Көп тапсырмалы жұмыстың бұл түрі кооперативті деп аталады, өйткені барлық бағдарламалар жұмыс істеу үшін жұмыс істеу керек. Бұл схемада операциялық жүйенің процестерді жоспарлаушысы кооперативтік жоспарлаушы деп аталады, оның рөлі процестерді бастаумен және оларға өз еркімен бақылауға қайтарумен шектеледі. Бұл асинхронды бағдарламалау әдісімен байланысты.
Cooperative multitasking, also known as non preemptive multitasking, is a style of computer multitasking in which the operating system never initiates a context switch from a running process to another process. Instead, in order to run multiple applications concurrently, processes voluntarily yield control periodically or when idle or logically blocked. This type of multitasking is called cooperative because all programs must cooperate for the scheduling scheme to work. In this scheme, the process scheduler of an operating system is known as a cooperative scheduler whose role is limited to starting the processes and letting them return control back to it voluntarily. This is related to the asynchronous programming approach.
Қолданылуы
Ол қазіргі операциялық жүйелерде бастапқы жоспарлау механизмі ретінде сирек қолданылса да, жады шектеулі кіріктірілген жүйелерде және сондай-ақ CICS немесе JES2 кіші жүйесі сияқты арнайы қосымшаларда кеңінен қолданылады. Кооперативтік көп тапсырмалылық - Windows 95 және Windows NT-ден бұрын Microsoft Windows-та және классикалық Mac OS-те қолданылған 16 битті бағдарламалардың негізгі жоспарлау схемасы. Windows 9x 16 биттік мұралық қосымшалар үшін алдын ала емес көп тапсырмалылықты қолданды, ал Mac OS X-тің PowerPC нұсқалары Leopard-тан бұрын оны классикалық қосымшалар үшін қолданды. Кооперативтік көп тапсырмалылық JavaScript немесе Python сияқты тілдегі асинхронды / күтуге ұқсас, олар өздерінің орындалу уақытында бір желілі оқиға циклін көрсетеді. Бұл кооперативтік көп тапсырмалылықпен қарама-қарсы, өйткені күту синхронды емес функциядан шақырылуы мүмкін емес, тек синхронды емес функциядан шақырылуы мүмкін, бұл coroutine түрі. Кооперативті көп тапсырмалылық қолданбаларды әлдеқайда оңай іске асыруға мүмкіндік береді, өйткені олардың орындалуы процестерді жоспарлаушымен күтпеген жерден үзілмейді; мысалы, қолданбаның ішіндегі әртүрлі функциялар қайтадан кіруді қажет етпейді.