C Програмиране

Тема POSIX с програмиране на C

Тема POSIX с програмиране на C
Нишката е малък екземпляр, изпълняван в рамките на процес. Нишките се комбинират, за да създадат процес и имат някои свойства на процеса; следователно те се считат за леки процеси. Нишката не е независима, точно като процес. По-скоро те работят заедно, за да компилират и създадат процес. И все пак, подобно на процеса, нишката също има свой собствен компютър (брояч на програми) и определен регистър, заедно с пространството на стека.

Тема POSIX:

В платформите на Linux стандартният API на езиците C и C ++ pthread за всички видове функции, свързани с нишки. Известна е също като POSIX нишка, която позволява на потребителите да създават много нишки за едновременни процеси. Най-добре се използва в многоядрени системи или процесори за внедряване на нишки в ядрото за постигане на системата.

Изпълнение:

Необходимо е да включите тази pthread.h заглавен файл в скрипта първоначално. Това ще помогне при използването на функциите на библиотеката pthreads. За да изпълните c файла, изпълнете следните команди

$ cc -pthread файл.° С

ИЛИ

$ cc -lpthread файл.° С

Функциите, дефинирани в библиотеката pthreads, могат да включват:

pthread_create:

Използва се за създаване на нова нишка

Параметри на pthread_create:

Той има следните параметри:

нишка: Това действа като указател към неподписана цяла стойност. Връща идентификатора на нишката на нишката, която се формира.

атрибути: Този параметър действа като указател към структура. Използва се за дефиниране на атрибути на нишка, която може да бъде политиката за планиране, адрес на стека и т.н.

начална_програма: Този параметър е указател към подпрограма, изпълнена от нишката.

аргумент: Този параметър е указател за void с различни аргументи към функцията, предварително дефинирана в началото на аргумента

Синтаксис:

>> int pthread_create
(pthread_t * нишка, const pthread_attributes_t * attr, void * (* start_routine) (void *), void * аргумент);

pthread_exit:

Използва се за прекратяване или завършване на нишка

Параметри на pthread_exit:

Методът, използван в края на метода / процеса, приема извличане на параметър, което е задължителен индикатор за цяло число. Той съхранява състоянието на нишката така, че нишката се прекратява. Трябва да е глобална променлива. Това ще позволи на следващата нишка на ред да се присъедини към нишката, ако е налична.

Синтаксис:

>> void pthread_exit (void * retval);

pthread_join:

Това е функция, използвана по време на изчакване за прекратяване на нишката.

Параметри за pthread_join:

Използваните тук параметри са:

thread_id: Това е идентификаторът на нишката, за която нишката в реда чака.

return_return: Това е параметърът, който действа като указател към конкретното местоположение, където сме дефинирали състоянието на изход.

Синтаксис:

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

pthread_self:

Това е метод, използван за получаване на идентификатора на нишката, която в момента е на линия.

Синтаксис:

>> pthread_t pthread_self (void);

pthread_equal:

Този метод се използва за сравнение в случай, че две нишки са еквивалентни или не. Ако две нишки са еднакви, тогава функцията ще върне стойност, различна от нула в отговор.

Синтаксис:

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

pthread_cancel:

Този метод се използва за изпращане на заявка за анулиране

Параметър за pthread_cancel:

Използваният параметър е задължителен за въвеждане за отмяна на заявката.

Синтаксис:

>> int pthread_cancel (pthread_t threadName);

pthread_detach:

Това е методът, който се използва за отделяне на нишка. Не се нуждае от нишка, която да се присъедини към прекратяването. Всички ресурси, работещи в нишката, се освобождават веднага след като нишката се отдели.

Параметър на pthread_detachr:

Това е параметърът, който приема задължителния идентификатор на нишката на параметъра. Трябва да се отдели.

Синтаксис:

>> int pthread_detach (pthread_t нишка);

Примерен код:

Ето примерния код, който показва изпълнението на гореописаната функция. Използвахме компилатор gcc, за да компилираме тези функции.

// Програма за показване на функциите на нишката
#include
#include
#include
// Извикване на POSIX нишка, задължителна за UNIX / LINUX системи
pthread_t tid [2];
void * Функция (void * arg)

неподписан дълъг i = 0;
pthread_t id = pthread_self ();
if (pthread_equal (id, tid [0]))
// Условие за нишки да са равни

printf ("\ n Първата нишка се обработва \ n");

друго

printf ("\ n Втората нишка се обработва \ n");

// Нишките се обработват.
за (i = 0; i<(0x255);i++);
връщане NULL;

int main (void)

int i = 0;
int грешка;
// Създаване на нова нишка
докато аз < 2)

грешка = pthread_create (& (tid [i]), NULL, & Функция, NULL);
ако (грешка != 0)
printf ("\ n Не можах да създам нишката: [% s]", strerror (грешка));
друго
printf ("\ n Темата е създадена успешно \ n");
// Темата е създадена успешно
i ++;

сън (5);
връщане 0;

Кодът е написан в текстов редактор; можете да използвате всеки редактор според вашия избор. След това го запазете на любимото си място.

Файлът се записва в компютърната система и след това се осъществява достъп. Запазеният от нас файл беше наречен тест.° С. За достъп до него въведете следната команда в прозореца на терминала:

$ sudo gcc тест.c -lpthread

След това, за да изпълните изхода, въведете следната команда:

$ ./ а.навън

Очакван резултат:

Изходът, който получихме в отговор на предишния код, е показан по-долу:

Заключение:

Урокът обхваща основния процес на създаване на нишка и обсъжда всички често използвани методи при нейното създаване. Нишката е екземпляр на процес. След това разхождахме потребителите през известните параметри, използвани от всеки процес, заедно със синтаксисите, за да могат те да ги използват в своите компютърни програми. Тук също споделихме примерен код като пример, за да разберем по-добре идеята за създаване на програма C в POSIX. Компилаторът, който използвахме, беше gcc в системата Linux. Потребителите могат да изберат и всеки друг компилатор въз основа на техните предпочитания.

Урок за OpenTTD
OpenTTD е една от най-популярните бизнес симулационни игри там. В тази игра трябва да създадете прекрасен транспортен бизнес. Въпреки това, ще започне...
SuperTuxKart за Linux
SuperTuxKart е страхотно заглавие, създадено да ви предостави безплатно изживяването на Mario Kart във вашата Linux система. Играта е доста предизвика...
Урок за битка за Уеснот
Битката за Уеснот е една от най-популярните стратегически игри с отворен код, които можете да играете по това време. Тази игра не само се разработва о...