Тема 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. Потребителите могат да изберат и всеки друг компилатор въз основа на техните предпочитания.