146. Процестер мен ағындарды құру
Жұмыс ағындары қолданбада әртүрлі фондық тапсырмаларды орындайды. Пайдаланушы интерфейсінің ағындары терезелермен байланысты және сол терезелерге келетін хабарламаларды өңдейді. Әрбір бағдарламада кем дегенде бір ағын бар, ол бастапқы (primary) немесе негізгі (main) ағын деп аталады. Консольдік қосымшаларда бұл негізгі функцияны орындайтын main. Графикалық қосымшаларында бұл WinMain функциясын орындайтын ағын.
Ағын CreateThread функциясы арқылы жасалады. Ағын ExitThread функциясын шақырумен аяқталады. Бұл функция ағын функциясынан мәнді қайтарған кезде анық немесе анық шақырылуы мүмкін. Бір ағын TerminateThread функциясын шақыру арқылы басқа ағынды аяқтай алады. Әр ағынның орындалуын SuspendThread функциясын шақыру арқылы тоқтатуға болады. Бұл функция тоқтата тұру есептегішінің мәнін 1-ге арттырады. Ағынның орындалуын қалпына келтіру үшін resumethread функциясы қолданылады, ол тоқтата тұру есептегішінің мәнін 1-ге төмендетеді. Ағын тоқтата тұру есептегішінің мәні нөлге тең болған жағдайда ғана орындалуы мүмкін. Ағын Sleep функциясын белгілі бір уақытқа шақыру арқылы оның орындалуын кешіктіруі мүмкін.
Сондай-ақ, Windows-та процесс орындалатын қолданба пайдаланатын жүйелік ресурстарға ие ядро нысанын білдіреді. Windows жүйесіндегі жаңа процесс CreateProcess функциясын шақыру арқылы жасалады. Процесс барлық процесс ағындары аяқталған кезде ExitProcess функциясын шақыру арқылы жұмысын аяқтай алады. TerminateProcess функциясын шақыру арқылы бір процесті басқасымен аяқтауға болады.
147.Процестер мен ағындарды басқару
Процестердің басымдылығы оларды CreateProcess функциясы жасаған кезде орнатылады.
* IDLE_PRIORITY_CLASS - фондық процестер клаcсы;
* BELOW_NORMAL_PRIORITY_CLASS - процесс класcы қалыптыдан төмен;
* NORMAL_PRTORITY_CLASS-қалыпты процестер клаcсы;
* ABOVE_NORMAL_PRIORITY_CLASS-процесс класcы қалыптыдан жоғары;
* HIGH_PRIORITY_CLASS-жоғары басымдықты процестер класcы;
* REAL_TIME_PRIORITY_CLASS - нақты уақыт процестерінің класcы.
Процестің басымдылығын SetPriorityClass функциясы арқылы өзгертуге болады, процестің басымдылығын GetPriorityClass функциясы арқылы білуге болады.
Процессорға уақытты бөлу кезінде жүйе ескеретін ағынның басымдылығы негізгі базалық (base) немесе ағынның негізгі басымдығы деп аталады. Барлығы 32 базалық негізгі басымдық бар — 0-ден 31-ге дейін. Әрбір негізгі басымдық үшін ағындардың кезегі бар. Ағынның негізгі басымдылығы процестің басымдылығы мен ағынның басымдық деңгейінің қосындысы ретінде анықталады. Соңғысы мәндерді қабылдауы мүмкін:
* THREAD_PRIORITY_LOWEST-төменгі басымдық;
* THREAD_PRIORITY_BELOW_NORMAL-қалыптыдан төмен басымдық;
* THREAD_PRIORITY_NORMAL-қалыпты басымдық;
* Thread_priority_above_normal-қалыптыдан жоғары басымдық;
* THREAD_PRIORITY_HIGHEST-жоғары басымдық.
* THREAD_PRIORTTY_TDLE - фондық ағынның басымдығы;
* THREAD_PRIORITY_TIME_CRITICAL-нақты уақыт ағынының басымдығы.
Ағынның басымдылығын өзгерту үшін Getthreadpriority функциясын шақыру арқылы ағынның басымдық деңгейін білу үшін SetThreadPriority функциясы қолданылады.
Достарыңызбен бөлісу: |