POSIX поток:
На платформах Linux стандартный API pthread языков C и C ++ для всех видов функций, связанных с потоками. Он также известен как поток POSIX, который позволяет пользователям создавать множество потоков для одновременного выполнения процессов. Его лучше всего использовать в многоядерных системах или процессорах для реализации потоков в ядре для достижения системы.
Выполнение:
Надо включить эту pthread.h заголовочный файл в скрипте изначально. Это поможет в использовании функций библиотеки pthreads. Чтобы выполнить файл c, следующие команды
$ cc -pthread файл.c
ИЛИ ЖЕ
$ cc -lpthread файл.c
Функции, определенные в библиотеке pthreads, могут включать:
pthread_create:
Он используется для создания новой темы
Параметры pthread_create:
Имеет следующие параметры:
нить: Это действует как указатель на целое число без знака. Он возвращает идентификатор потока, который сформирован.
атрибуты: Этот параметр действует как указатель на структуру. Он используется для определения атрибутов потока, которые могут быть политикой планирования, адресом стека и т. Д.
start_routine: Этот параметр является указателем на подпрограмму, реализованную потоком.
аргумент: Этот параметр является указателем на void с разными аргументами на функцию, предварительно определенную в начале аргумента
Синтаксис:
>> int pthread_create(pthread_t * thread, const pthread_attributes_t * attr, void * (* start_routine) (void *), void * аргумент);
pthread_exit:
Он используется для завершения или завершения потока
Параметры pthread_exit:
Метод, используемый в конце метода / процесса, принимает параметр retval, который является обязательным индикатором целого числа. Он сохраняет статус потока, так что поток завершается. Это должна быть глобальная переменная. Это позволит следующему потоку в очереди присоединиться к потоку, если он доступен.
Синтаксис:
>> void pthread_exit (void * retval);pthread_join:
Это функция, используемая во время ожидания завершения потока.
Параметры для pthread_join:
Здесь используются следующие параметры:
thread_id: Это идентификатор потока, которого ожидает поток в очереди.
thread_return: Это параметр, который действует как указатель на конкретное место, где мы определили статус выхода.
Синтаксис:
>> int pthread_join (pthread_t thread_identification, void ** thread_return);pthread_self:
Это метод, используемый для получения идентификатора потока, находящегося в данный момент в строке.
Синтаксис:
>> pthread_t pthread_self (недействительно);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:
Это параметр, который принимает обязательный параметр thread id. Это должно быть отделено.
Синтаксис:
>> int pthread_detach (поток pthread_t);Образец кода:
Вот пример кода, демонстрирующий реализацию описанной выше функции. Мы использовали компилятор gcc для компиляции этих функций.
// Программа для отображения функций потока#включать
#включать
#включать
// Вызов потока POSIX, необходимого в системах UNIX / LINUX
pthread_t tid [2];
void * Функция (void * arg)
беззнаковый длинный я = 0;
pthread_t id = pthread_self ();
если (pthread_equal (id, tid [0]))
// Условие равенства потоков
printf ("\ n Первый поток обрабатывается \ n");
еще
printf ("\ n Второй поток обрабатывается \ n");
// Обрабатываемые потоки.
для (i = 0; i<(0x255);i++);
return NULL;
int main (пусто)
int я = 0;
int error;
// Создание нового потока
в то время как я < 2)
error = pthread_create (& (tid [i]), NULL, & Function, NULL);
если (ошибка != 0)
printf ("\ n Не удалось создать поток: [% s]", strerror (error));
еще
printf ("\ n Тема успешно создана \ n");
// Поток успешно создан
i ++;
сон (5);
возврат 0;
Код написан в текстовом редакторе; вы можете использовать любой редактор по вашему выбору. Затем сохраните его в своем любимом месте.
Файл сохраняется в компьютерной системе, а затем к нему осуществляется доступ. Сохраненный нами файл получил название test.c. Чтобы получить к нему доступ, введите следующую команду в окне терминала:
$ sudo gcc test.c -lpthread
Затем, чтобы выполнить вывод, введите следующую команду:
$ ./ а.вне
Ожидаемый результат:
Результат, который мы получили в ответ на предыдущий код, показан ниже:
Заключение:
В руководстве описан базовый процесс создания потока и рассмотрены все обычно используемые методы его создания. Поток - это экземпляр процесса. Затем мы познакомили пользователей с известными параметрами, используемыми каждым процессом, вместе с синтаксисами, чтобы они могли использовать их в своих компьютерных программах. Здесь мы также поделились примером кода в качестве образца, чтобы лучше понять идею создания программы на C в POSIX. В системе Linux мы использовали компилятор gcc. Пользователи могут выбрать любой другой компилятор в зависимости от своих предпочтений.