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

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

Передача данных в поток

Передача данных в поток - раздел Компьютеры, Потоки в ОС Linux Т.к. Тип Аргумента, Передаваемого В Поток, - Void*, То Для П...

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

Необходимо, чтобы данные, передаваемые новому потоку, были доступны потоку, при этом не следует передавать стековые переменные. Как Вы думаете, почему?

 

Задание 2. Выполните программу pr2.c. Программа создает два новых потока: один печатает 'x', другой 'o' на устройстве stderr. Каждый поток печатает определенное количество символов и затем завершается возвратом из функции потока. Оба потока используют одну и ту же функцию, char_print, но вызывают ее с разными значениями параметров.

 

/* pr2.c */

#include <pthread.h>

#include <stdio.h>

struct char_print_parms

{

char character; /* Символ, который печатать */

int count; /* Сколько раз печатать символ */

};

void* char_print (void* parameters)

{

/* Преобразовать указатель к нужному типу */

struct char_print_parms* p = (struct char_print_parms*) parameters;

int i;

for (i = 0; i < p->count; ++i)

fputc (p->character, stderr);

return NULL;

}

int main ()

{

pthread_t thread1_id;

pthread_t thread2_id;

struct char_print_parms thread1_args;

struct char_print_parms thread2_args;

thread1_args.character = ’x’;

thread1_args.count = 30; /* Печатать 'x' 30 раз */

pthread_create (&thread1_id, NULL, &char_print, &thread1_args);

thread2_args.character = ’o’;

thread2_args.count = 20; /* Печатать 'о' 20 раз */

pthread_create (&thread2_id, NULL, &char_print, &thread2_args);

return 0;

}

 

Внимание! Данная программа содержит ошибку. Для отладки программы добавьте в функцию потока печать переданных параметров. Исправьте ошибку и поясните ее причину.

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

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

Потоки в ОС Linux

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

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

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

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

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

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

Создание и завершение потоков
Создание потока. Поток создается функцией pthtead_create, имеющей 4 параметра: 1. Указатель на переменную типа pthread_t, в нее бу

Объединение потоков
В случае потоков аналогом функции 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
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги