Ц Програмирање

ПОСИКС нит са програмирањем на језику Ц

ПОСИКС нит са програмирањем на језику Ц
Нит је мала инстанца која се изводи у процесу. Нити се комбинују да би створили процес и имају нека својства процеса; стога се сматрају лаганим процесима. Конац није независан, баш попут процеса. Уместо тога, они заједно раде на састављању и стварању процеса. Ипак, баш као и процес, нит такође има свој рачунар (Бројач програма) и одређени регистар постављен заједно са простором стека.

ПОСИКС нит:

На Линук платформама, језици Ц и Ц ++ представљају стандардни АПИ за све врсте функција повезаних са нитима. Такође је познат као ПОСИКС нит која омогућава корисницима да креирају много нити за истовремени ток процеса. Најбоље га је користити у вишејезгреним системима или процесорима за примену нити на језгру да би се постигао систем.

Имплементација:

Неопходно је укључити овај птхреад.х датотека заглавља у скрипти у почетку. Ово ће помоћи у коришћењу функција библиотеке птхреадс. Да бисте извршили ц датотеку, користите следеће наредбе

$ цц -птхреад датотека.ц

ИЛИ

$ цц -лптхреад датотека.ц

Функције које су дефинисане у библиотеци птхреадс могу да укључују:

птхреад_цреате:

Користи се за стварање нове нити

Параметри птхреад_цреате:

Има следеће параметре:

нит: Ово делује као показивач на непотписану целу вредност. Враћа ИД нити која је формирана.

атрибути: Овај параметар делује као показивач на структуру. Користи се за дефинисање атрибута нити која може бити политика распоређивања, адреса стека итд.

старт_роутине: Овај параметар је показивач на потпрограм који имплементира нит.

расправа: Овај параметар је показивач на воид са различитим аргументима на функцију унапред дефинисану на почетку аргумента

Синтакса:

>> инт птхреад_цреате
(птхреад_т * нит, цонст птхреад_аттрибутес_т * аттр, воид * (* старт_роутине) (воид *), воид * аргумент);

птхреад_екит:

Користи се за завршавање или завршавање нити

Параметри птхреад_екит:

Метода која се користи на крају методе / процеса прихвата поврат параметра који је обавезни показатељ целог броја. Похрањује статус нити тако да се нит завршава. То мора бити глобална променљива. Ово ће омогућити да се следећа нит у реду придружи нити ако је доступна.

Синтакса:

>> воид птхреад_екит (воид * ретвал);

птхреад_јоин:

Ово је функција која се користи у време чекања на завршетак нити.

Параметри за птхреад_јоин:

Овде се користе параметри:

тхреад_ид: То је ИД нити за коју нит у линији чека.

тхреад_ретурн: Параметар је тај који делује као показивач на одређену локацију на којој смо дефинисали статус излаза.

Синтакса:

>> инт птхреад_јоин (птхреад_т тхреад_идентифицатион, воид ** тхреад_ретурн);

птхреад_селф:

Ово је метода која се користи за добивање ИД-а нити која је тренутно у реду.

Синтакса:

>> птхреад_т птхреад_селф (воид);

птхреад_екуал:

Овом методом се упоређује у случају да су две нити еквивалентне или не. Ако су две нити једнаке, тада ће функција у одговору вратити вредност различиту од нуле.

Синтакса:

>> инт птхреад_екуал (птхреад_т нит1, птхреад_т нит2);

птхреад_цанцел:

Овом методом се шаље захтев за отказивање

Параметар за птхреад_цанцел:

Параметар који се користи обавезно се уноси за отказивање захтева.

Синтакса:

>> инт птхреад_цанцел (птхреад_т нитНаме);

птхреад_детацх:

Ово је метода која се користи за одвајање нити. Не треба му нит која би се придружила на раскиду. Сви ресурси који се изводе у нити ослобађају се чим се нит одвоји.

Параметар птхреад_детацхр:

Параметар је тај који прихвата обавезни ИД нити параметра. Морате бити одвојени.

Синтакса:

>> инт птхреад_детацх (птхреад_т нит);

Пример узорка:

Ево примера кода који показује имплементацију горе описане функције. За компајлирање ових функција користили смо гцц компајлер.

// Програм за приказ функција нити
#инцлуде
#инцлуде
#инцлуде
// Позивање ПОСИКС нити, коју морају имати УНИКС / ЛИНУКС системи
птхреад_т тид [2];
воид * функција (воид * арг)

непотписано дуго и = 0;
птхреад_т ид = птхреад_селф ();
иф (птхреад_екуал (ид, тид [0]))
// Услов да су нити једнаке

принтф ("\ н Прва нит се обрађује \ н");

иначе

принтф ("\ н Друга нит се обрађује \ н");

// Нити се обрађују.
за (и = 0; и<(0x255);i++);
ретурн НУЛЛ;

инт маин (воид)

инт и = 0;
инт еррор;
// Креирање нове нити
Док сам < 2)

грешка = птхреад_цреате (& (тид [и]), НУЛЛ, & Функција, НУЛЛ);
ако (грешка != 0)
принтф ("\ н Нисам успео да створим нит: [% с]", стреррор (грешка));
иначе
принтф ("\ н Тема је успешно креирана \ н");
// Тема је успешно креирана
и ++;

спавање (5);
ретурн 0;

Код је написан у уређивачу текста; можете користити било који едитор на основу вашег избора. Затим га сачувајте на омиљеном месту.

Датотека се чува у рачунарском систему, а затим јој се приступа. Датотека коју смо сачували названа је тест.ц. Да бисте му приступили, откуцајте следећу команду у прозору терминала:

$ судо гцц тест.ц -лптхреад

Даље, да бисте извршили излаз, откуцајте следећу наредбу:

$ ./ а.напоље

Очекивани излаз:

Излаз који смо добили као одговор на претходни код приказан је испод:

Закључак:

Водич је обухватио основни процес стварања нити и размотрио све најчешће коришћене методе у његовом стварању. Нит је инстанца процеса. Затим смо прошетали кроз познате параметре које користи сваки процес заједно са синтаксама како би их могли користити у својим рачунарским програмима. Овде смо такође поделили пример кода као пример да бисмо боље разумели идеју стварања Ц програма у ПОСИКС-у. Компајлер који смо користили био је гцц у систему Линук. Корисници се могу одлучити за било који други компајлер на основу својих жеља.

Курсор скаче или се насумично помера док куцате у оперативном систему Виндовс 10
Ако откријете да курсор миша скаче или се сам помера, аутоматски, насумично док куцате на Виндовс преносном рачунару или рачунару, неки од ових предло...
Како да обрнете смер померања миша и додирних табли у оперативном систему Виндовс 10
Миш и Тоуцхпадрачунарство не само да олакшава рад, већ и ефикасније и мање времена. Не можемо замислити живот без ових уређаја, али ипак је чињеница д...
Како променити показивач миша и величину, боју и шему курсора на Виндовс 10
Показивач миша и курсор у оперативном систему Виндовс 10 су врло важни аспекти оперативног система. То се може рећи и за друге оперативне системе, так...