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

Поток POSIX с программированием на C

Поток POSIX с программированием на C
Поток - это небольшой экземпляр, работающий внутри процесса. Потоки объединяются, чтобы создать процесс, и у них есть некоторые свойства процесса; поэтому они считаются легковесными процессами. Поток не является независимым, как и процесс. Скорее они работают вместе, чтобы скомпилировать и создать процесс. Тем не менее, как и процесс, поток также имеет свой собственный компьютер (счетчик программ) и определенный набор регистров вместе с пространством стека.

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

Топ-5 карт для захвата игр
Все мы видели и любили потоковые игры на YouTube. PewDiePie, Jakesepticye и Markiplier - лишь некоторые из лучших игроков, которые заработали миллионы...
Как разработать игру в Linux
Десять лет назад не многие пользователи Linux могли бы предсказать, что их любимая операционная система однажды станет популярной игровой платформой д...
Порты коммерческих игровых движков с открытым исходным кодом
Бесплатные игры с открытым исходным кодом и кроссплатформенные версии игрового движка можно использовать для игры как в старые, так и в некоторые из с...