рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Создание и завершение потоков

Создание и завершение потоков - раздел Компьютеры, Потоки в ОС Linux Создание Потока. Поток Создается Функцией Pth...

Создание потока. Поток создается функцией pthtead_create, имеющей 4 параметра:

1. Указатель на переменную типа pthread_t, в нее будет записан ID нового потока.

2. Указатель на объект атрибут потока. Этот объект управляет деталями взаимодействия потока с остальной программой. Если параметр равен NULL, то поток будет создан с атрибутами по умолчанию.

3. Указатель на функцию потока. Это обычный указатель на функцию типа void*(*)(void*), т.е. функция потока принимает один параметр типа указатель на void и возвращает значение типа указатель на void..

4. Значение атрибута потока типа void*. Это значение передается потоку как аргумент в функцию потока. Через него можно передать новому потоку параметры.

После создания каждый поток выполняет функцию потока - обычную функцию в программе пользователя. При завершении этой функции поток завершается.

Возврат из функции pthread_create происходит немедленно, и исходный поток продолжает выполнение команд, следующих за вызовом pthread_create. Одновременно новый поток начинает выполнение функции потока. Функция pthread_create возвращает ноль в случае успеха или не ноль в случае ошибки.

Завершение потока. При нормальных условиях поток завершается двумя способами:

1. Обычный возврат из функции потока. Величина, возвращаемая return, будет являться значением, возвращаемым потоком.

2. Возврат при помощи функции pthread_exit. Она может быть вызвана из любой функции данного потока. Аргумент этой функции будет являться значением, возвращаемым потоком.

 

Задание 1. Выполните программу pr1.c. Программа создает поток, который непрерывно печатает 'x' на устройстве stderr. После создания потока главный поток непрерывно печатает 'o' на stderr. (Приостановить выполнение программы можно при помощи Ctrl-s; возобновить - любой клавишей. Снять программу можно при помощи Ctrl-c.)

 

/* pr1.c */

#include <pthread.h>

#include <stdio.h>

#include <stdlib.h>

void* print_xs (void* unused)

{

while (1)

fputc (‘x’, stderr);

return NULL;

}

int main ()

{

int p;

pthread_t thread_id;

p = pthread_create (&thread_id, NULL, &print_xs, NULL);

if (p != 0) { perror("Thread problem"); exit(1);}

while (1)

fputc (‘o’, stderr);

return 0;

}

 

Что произойдет, если stderrзаменить на stdout? Добавьте в программу печать идентификаторов обоих потоков, убрав операторы цикла while. Воспользуйтесь функцией pthread_self (Возвращает ID потока, в котором была вызвана. Не имеет параметров.).

– Конец работы –

Эта тема принадлежит разделу:

Потоки в ОС Linux

На сайте allrefs.net читайте: "Потоки в ОС Linux"

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Создание и завершение потоков

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

I. Управление потоками
  Основная цель использования потоков - это разделение программы на подзадачи, которые могут выполняться параллельно. По сравнению с процессами взаимодействие и синхронизация потоков

Передача данных в поток
Т.к. тип аргумента, передаваемого в поток, - void*, то для передачи одного параметра типа intего следует преобразовать к типу (void*) (См.,

Объединение потоков
В случае потоков аналогом функции wait является функция pthread_join: поток, вызвавший эту функцию, будет ожидать завершения указанного потока. Функция возвращает

II. Сравнение потоков и процессов
Изучите работу четырех программ, makefile, simple.c, simple_processes.c, simple_threads.c, simple_mutex.c, приве

Вопросы
1. Что такое поток? Какова цель использования потоков в программах? 2. Какова разница между потоками и процессами? 3. Когда потоки могут выполняться действительно параллельно?

Источники информации
1. Митчел М., Оулдем Дж., Самьюэл А. Программирование для Linux. Профессиональный подход. - М.: Издательский дом "Вильямс", 2003. (Глава 4) (The original book (2001) is available at http:

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги