C Programmēšana

POSIX pavediens ar C programmēšanu

POSIX pavediens ar C programmēšanu
Vītne ir maza instance, kas darbojas procesā. Vītnes tiek apvienotas, lai izveidotu procesu, un tām ir dažas procesa īpašības; tāpēc tos uzskata par viegliem procesiem. Vītne nav neatkarīga, tāpat kā process. Viņi drīzāk strādā kopā, lai apkopotu un izveidotu procesu. Tomēr tāpat kā procesam, arī pavedienam ir savs dators (programmu skaitītājs) un noteikts reģistrs kopā ar kaudzes vietu.

POSIX vītne:

Linux platformās C un C ++ valodas izveido standarta API visu veidu ar pavedieniem saistītām funkcijām. Tas ir arī pazīstams kā POSIX pavediens, kas ļauj lietotājiem izveidot daudz pavedienu vienlaicīgu procesu plūsmai. Vislabāk to izmantot daudzkodolu sistēmās vai procesoros, lai ieviestu pavedienus kodolā, lai panāktu sistēmu.

Īstenošana:

Ir nepieciešams iekļaut šo pthread.h galvenes fails sākotnēji skriptā. Tas palīdzēs izmantot pthreads bibliotēkas funkcijas. Lai izpildītu c failu, veiciet šādas komandas

$ cc -pvītnes fails.c

VAI

$ cc -lpthread fails.c

Funkcijas, kas definētas pthreads bibliotēkā, var ietvert:

pthread_create:

To izmanto, lai izveidotu jaunu pavedienu

Pthread_create parametri:

Tam ir šādi parametri:

pavediens: Tas darbojas kā neparakstīta vesela skaitļa vērtība. Tas atgriež izveidotā pavediena pavediena ID.

atribūti: Šis parametrs darbojas kā rādītājs struktūrai. To lieto, lai definētu pavedienu atribūtus, kas var būt plānošanas politika un kaudzes adrese utt.

start_routine: Šis parametrs ir norāde uz apakšprogrammu, kuru ievieš pavediens.

arguments: Šis parametrs ir rādītājs, kas jānorāda ar dažādiem argumentiem funkcijai, kas iepriekš definēta argumenta sākumā

Sintakse:

>> int pthread_create
(pthread_t * pavediens, const pthread_attributes_t * attr, void * (* start_routine) (void *), void * arguments);

pthread_exit:

To lieto, lai pārtrauktu vai pārtrauktu pavedienu

Pthread_exit parametri:

Metode, kas tiek izmantota metodes / procesa beigās, pieņem parametra retval, kas ir obligāts rādītājs veselam skaitlim. Tas saglabā pavediena statusu tā, ka pavediens tiek pārtraukts. Tam jābūt globālam mainīgajam. Tas ļaus nākamajam rindas pavedienam pievienoties pavedienam, ja tas ir pieejams.

Sintakse:

>> void pthread_exit (void * retval);

pthread_join:

Šī ir funkcija, ko izmanto brīdī, kad tiek gaidīts pavediena pārtraukums.

Parametri pthread_join:

Šeit tiek izmantoti šādi parametri:

thread_id: Tas ir pavediena ID, kuru rindā esošais pavediens gaida.

thread_return: Tas ir parametrs, kas darbojas kā rādītājs konkrētajai vietai, kur mēs esam definējuši izejas statusu.

Sintakse:

>> int pthread_join (pthread_t thread_identification, void ** thread_return);

pthread_self:

Šī ir metode, ko izmanto, lai iegūtu pašreizējā pavediena ID.

Sintakse:

>> pthread_t pthread_self (anulēts);

pthread_equal:

Šo metodi izmanto, lai salīdzinātu, ja divi pavedieni ir līdzvērtīgi vai nav. Ja divi pavedieni ir vienādi, funkcija atbildēs uz citu vērtību, nevis nulli.

Sintakse:

>> int pthread_equal (pthread_t thread1, pthread_t thread2);

pthread_cancel:

Šo metodi izmanto, lai nosūtītu atcelšanas pieprasījumu

Parametrs pthread_cancel:

Izmantotais parametrs ir obligāti jāievada, lai atceltu pieprasījumu.

Sintakse:

>> int pthread_cancel (pthread_t threadName);

pthread_detach:

Šī ir metode, ko izmanto pavediena atdalīšanai. Tam nav nepieciešams neviens pavediens, lai pievienotos izbeigšanai. Visi pavedienā darbojošie resursi tiek atbrīvoti, tiklīdz pavediens ir atvienots.

Pthread_detachr parametrs:

Tas ir parametrs, kas pieņem obligāto parametru pavediena id. Tas ir jāatrauj.

Sintakse:

>> int pthread_detach (pthread_t pavediens);

Parauga kods:

Šeit ir koda piemērs, lai parādītu iepriekš aprakstītās funkcijas ieviešanu. Lai apkopotu šīs funkcijas, mēs izmantojām gcc kompilatoru.

// Programma, lai parādītu pavedienu funkcijas
# iekļaut
# iekļaut
# iekļaut
// Zvanīšana uz POSIX pavedienu, obligāta nepieciešamība UNIX / LINUX sistēmās
pthread_t tid [2];
void * Funkcija (void * arg)

neparakstīts garš i = 0;
pthread_t id = pthread_self ();
ja (pthread_equal (id, tid [0]))
// Nosacījums, lai pavedieni būtu vienādi

printf ("\ n Tiek apstrādāts pirmais pavediens \ n");

cits

printf ("\ n Tiek apstrādāts otrais pavediens \ n");

// Vītnes tiek apstrādātas.
par (i = 0; i<(0x255);i++);
atgriešanās NULL;

int main (anulēts)

int i = 0;
int kļūda;
// Jauna pavediena izveide
kamēr es < 2)

kļūda = pthread_create (& (tid [i]), NULL un & Function, NULL);
ja (kļūda != 0)
printf ("\ n Nevarēja izveidot pavedienu: [% s]", strerror (kļūda));
cits
printf ("\ n pavediens ir veiksmīgi izveidots \ n");
// Vītne ir veiksmīgi izveidota
i ++;

gulēt (5);
atgriešanās 0;

Kods ir ierakstīts teksta redaktorā; jūs varat izmantot jebkuru redaktoru, pamatojoties uz jūsu izvēli. Pēc tam saglabājiet to iecienītākajā vietā.

Fails tiek saglabāts datorsistēmā un pēc tam tam tiek piekļūts. Mūsu saglabāto failu nosauca par testu.c. Lai tai piekļūtu, termināļa logā ierakstiet šādu komandu:

$ sudo gcc tests.c -lpthread

Pēc tam, lai izpildītu izvadi, ierakstiet šādu komandu:

$ ./ a.ārā

Paredzamais iznākums:

Rezultāts, ko mēs saņēmām, reaģējot uz iepriekšējo kodu, ir parādīts zemāk:

Secinājums:

Apmācība aptvēra pavedienu izveides pamatprocesu un apsprieda visas tā izveidē parasti izmantotās metodes. Vītne ir procesa piemērs. Pēc tam mēs iepazīstinājām lietotājus ar slavenajiem parametriem, kurus izmanto katrs process, kā arī ar sintaksēm, lai viņi tos varētu izmantot savās datorprogrammās. Šeit mēs kā paraugu arī kopīgojām koda piemēru, lai labāk izprastu ideju par C programmas izveidi POSIX. Kompilators, kuru mēs izmantojām, Linux sistēmā bija gcc. Lietotāji var izvēlēties arī jebkuru citu kompilatoru, pamatojoties uz viņu vēlmēm.

OpenTTD vs Simutrans
Transporta simulācijas izveide var būt jautra, relaksējoša un ārkārtīgi vilinoša. Tāpēc jums jāpārliecinās, ka izmēģināt pēc iespējas vairāk spēļu, la...
OpenTTD apmācība
OpenTTD ir viena no populārākajām biznesa simulācijas spēlēm. Šajā spēlē jums ir jāizveido brīnišķīgs transporta bizness. Tomēr jūs sāksit sākumā apmē...
SuperTuxKart operētājsistēmai Linux
SuperTuxKart ir lielisks nosaukums, kas paredzēts, lai sniegtu jums Mario Kart pieredzi bez maksas jūsu Linux sistēmā. Tas ir diezgan izaicinoši un ja...