Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
21 / 21 / 8
Регистрация: 20.10.2013
Сообщений: 138

Вернуть значение из потока

28.09.2015, 11:46. Показов 3153. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу понять задания.

Запускается th1 и th2. th1 запускает th2(4kb stack) и анализирует, в случае если это необходимо информацию th2, который в свою очередь должен вернуть: ProcessName.

допустим, по первой половине задания:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <pthread.h>
#include <unistd.h>
 
void th2(){
    /*??*/
}
 
void th1(){
    pthread_t th2;
    pthread_create(&th2, null, (void *(*)(void *)) th1, null);
    pthread_join(th2, null);
}
 
int main(int argc, const char *argv[]) {
    pthread_t th1;
    pthread_create(&th1, null, (void *(*)(void *)) th1, null);
    pthread_join(th1, null);
 
    return 0;
}
а дальше не могу понять, что значит вернуть из потока? получить process name в th2, записать его в глобальную переменную, и прочитать её в th1 или как?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.09.2015, 11:46
Ответы с готовыми решениями:

Вернуть значение из потока
Помогите пожайлуста, нужно вернуть list из потока. Делаю так: import codecs from multiprocessing.pool import ThreadPool pool =...

Вернуть значение из потока
как из этого класса вернуть значение переменной msg.getMsg() в главный класс import java.util.concurrent.BlockingQueue; public...

Вернуть значение из второго потока первому
Как это сделать?) Мне требуется вернуть значение из потока, который работает одновременно с главным, и чтобы главный увидел это...

4
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.09.2015, 16:29
Лучший ответ Сообщение было отмечено residentkms как решение

Решение

В функции main создать локальную переменную (например, типа int, если поток должен вернуть int). Указатель на неё передать последним параметром в pthread_create. В th1 добавить параметр типа int* и по этому указателю записывать результат
1
2 / 2 / 1
Регистрация: 28.09.2015
Сообщений: 14
28.09.2015, 17:52
Задание конечно несколько запутанно поставлено.

Вообще потоки могут взаимодействовать через глобальные переменные, это самый простой вариант.
Только на запись потребуется синхронизация.
Если писатель один то нет проблем.

Здесь конечно я думаю требуется передать через четвертый параметр.
pthread_create четвертым параметром принимает агрументы
Можно передать через него указатель на какую то область памяти и туда писать ответ как и было написано выше.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.09.2015, 17:58
На всякий случай. В примере есть засада - локальная переменная th1 совпадает по имени с функцией th1, и конструкция pthread_create (&th1), мягко говоря, сделает не то, что надо

Результат можно возвращать в том числе и через return в функции th1. Это должен быть указатель, который поймается через 2-й параметр pthread_join. Но для простых случаев это менее удобный вариант
1
21 / 21 / 8
Регистрация: 20.10.2013
Сообщений: 138
01.10.2015, 10:56  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
В примере есть засада - локальная переменная th1 совпадает по имени с функцией th1
то что я выложил в первом посте писал не компилируя, но то, что это неккоректно уже увидел.
Цитата Сообщение от DrVlad Посмотреть сообщение
Вообще потоки могут взаимодействовать через глобальные переменные, это самый простой вариант.
просто всегда меня учили, что глобальные переменные это плохо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.10.2015, 10:56
Помогаю со студенческими работами здесь

Как вернуть значение функции из потока (boost) ?
Есть основной цикл, который принимает команды из вне. Требуется при получении этой команды в потоке выполнить расчеты и выполнить...

Как вернуть строку из потока
Всем привет. Приложение работает так : после клика по кнопке запускается поток, загружающий кое-какие данные с сайта, затем парсит их и...

Вернуть html из асинхронного потока
Здравствуйте, необходимо получить html сервера из асинхронного потока. Есть код: public String httpPost(final String url, final...

Как вернуть матрицу из потока?
Хочу сделать вычисления в своём потоке, форму в своём и вывести результат(эту самую матрицу) на форму. namespace ТП { public...

Как можно в progressBar вернуть прогресс нужного потока?
На разных фрагментах(экранах) начинаю скачку файла и именно на лаяуте располагается progressBar, при переходе с экрана на экран progressBar...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru