Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.74/89: Рейтинг темы: голосов - 89, средняя оценка - 4.74
3 / 26 / 9
Регистрация: 29.08.2010
Сообщений: 204

Вызывть метод одного потока из другого потока

10.03.2014, 21:28. Показов 19957. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста, как можно реализовать такую штуку :

есть один поток(1), который вызывает метод у обьекта, этот метод создает второй поток(2) и в новом потоке(2) что-то делает, потом по окончанию своей работы(2 - поток), нужно вызвать метод который выполнился б уже в первом(1) потоке, тоесть второй поток впихивает метод в первый.

Вообщем можно ли такое?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.03.2014, 21:28
Ответы с готовыми решениями:

Как из одного потока узнать состояние другого потока
Подскажите пожалуйста, как из одного потока узнать, что другой поток еще не запущен. Например, второй поток формируется в классе...

По нажатию на кнопку из другого потока, нужно чтобы 2 потока останавливались
Есть 2 потока, в которых в цикле выполняется метод Thread.sleep(200); По нажатию на кнопку из другого потока, нужно чтобы эти 2 потока...

Запуск одного потока из другого
подскажите пожалуйста, есть поток можно ли запустить другой поток внутри потока так что б старый поток продолжал выполняться? т.е.: код...

28
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
12.03.2014, 10:56
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от HardMorg Посмотреть сообщение
если бы можно было запускать обработчики операций ввода-вывода в потоке GUI то синхронизация не нужна
Запускайте. Кто ж Вам не дает. Только когда GUI будет подвешиваться, пеняйте на себя.
0
3 / 26 / 9
Регистрация: 29.08.2010
Сообщений: 204
12.03.2014, 15:55  [ТС]
Tulosba, видно вы немного непоняли, не сами операции ввода-вывода и сеть, а только обработчики которые вызываются после выполнения этих операций
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
12.03.2014, 16:03
Цитата Сообщение от HardMorg Посмотреть сообщение
а только обработчики которые вызываются после выполнения этих операций
Дело тут в первую очередь в длительности операций, а не в том, как их назвать.
0
3 / 26 / 9
Регистрация: 29.08.2010
Сообщений: 204
12.03.2014, 23:52  [ТС]
Tulosba, вы правы дело в длительности, саму операцию обрабатывать в одном потоке, а обработчик который нужно вызвать в первом потоке( сам обработчик легкий)
но мне так и не подсказали как так можно сделать( как я выше спрашивал)
сам я тоже в принципе ничего не не нашел, в бусте видел boost:coroutine, В принципе почти то что я искал, но он не поддерживает прижки между разными потоками
так что такие вот дела(
0
13.03.2014, 00:36

Не по теме:

тем временем в другой галактике C#

C#
1
2
3
4
5
6
7
//UI thread
async void SomeHandler()
{
    var content = await GetContentAsync();
 
    //work with content after async task finished
}
boost::coroutine как и самому с++ ещё грести и грести до такого, и не факт что выгребет

0
 Аватар для Pure
228 / 52 / 7
Регистрация: 13.03.2012
Сообщений: 453
Записей в блоге: 26
14.03.2014, 15:40
ересь чес слово.
1.где нужен результат обработки? например отобразить циферки в форме или заполнить форму данными из файла пришедшими по сети?
2. делаем функцию, которая будет обновлять формочку, соответственно у функции должен быть доступ к формочке.
3. При нажатии кнопки Апдейт - создаем поток и передаем в него указатель на эту функцию.
4. в конце потока, после получения данных из сети - дергаем этот указатель и формочка или оконце наполняется данными. Выходим из потока.

ВСЕ потоки в рамках ОДНОГО процесса имеют общее адресное пространство и общий доступ к ресурсам. Затем и придумали синхронизацию. Так в чем сложность то? Наплодить кучу потоков, передавать им указатели на обработчики и дергать эти обработчики перед выходом из потока?
Функция, ее определение - это просто кусочек памяти и обращаться к ней может любой поток.

Чтобы лучше понимать как работают монстры qt и прочие бусты, попробуй вначале просто нативно на API это все сделать. И все поймешь. Окошко, сокет, кнопка, функция обработчик текста окошка.
По нажатию кнопки - новый поток, соединение по сети запись чтение, вызов обработчика окошка, выход.

Уже сверху всего это наслаиваются классы и прочая мегаполезная прослойка, которая часто запутывает людей, но и здорово облегчает жизнь пользователям qt и буст.

Видимо ты не хош сам вникать. Таки скидывай весь код. Глядишь тебе кто то враз все поправит. Но все же я настаиваю на том, чтобы ты сам разобрался
0
3 / 26 / 9
Регистрация: 29.08.2010
Сообщений: 204
14.03.2014, 16:18  [ТС]
Pure, простите, но видать вы просто не поняли что я хотел, то что вы написали это все ясно и понятно, суть не этом, я просто думал о другом подходе, про какой код вы говорите тоже не ясно, ничего мне кидать не нужно, в начале темы я другое писал, посмотритет что постил человек выше, вот реально на что-то похоже, но это шарп
0
 Аватар для Pure
228 / 52 / 7
Регистрация: 13.03.2012
Сообщений: 453
Записей в блоге: 26
14.03.2014, 23:09
Цитата Сообщение от HardMorg Посмотреть сообщение
вы просто не поняли что я хотел
а сам четко понимаешь что хочешь? То, что юпитер написал в паре строк шарповского кода - лишь обертка над нативным апи. то бишь все даже еще на С работает, чего уж там. А на С++ подавно.
Цитата Сообщение от Jupiter Посмотреть сообщение
boost::coroutine как и самому с++ ещё грести и грести до такого, и не факт что выгребет
нативненько все отлично работает.
Ладно, удач и сбычи мечт всем
0
3 / 26 / 9
Регистрация: 29.08.2010
Сообщений: 204
14.03.2014, 23:48  [ТС]
Pure, Вы снова явно что-то не так поняли, давайте по порядку, я в начале топика задал вопрос который как мне показалось имеет смысл, меня не поняли, я потом написал более развернутый вопрос, то что вы начали описывать, это я знал, суть темы сводилась не в перетертыванию старого, а мне было просто интересно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.03.2014, 23:48

Вызвать метод из другого потока?
Как вызвать метод isSimple с др потока??? using System; using System.Collections.Generic; using System.Text; using...

Управление объектами потока из другого потока
Доброго времени. Есть два потока, один GUI, второй рабочий - делает снапшоты открытых окон, сравнивает их, передаёт потоку GUI...

Многопоточность: вызвать метод главного потока из второстепенного потока
Здравствуйте. Эта тема всеми избита, знаю. Но у меня очень ограничено время, поэтому рискую и пишу вопрос тут: Пишу приложение...

Системный вызов Pipe(), соединение потока вывода одного потомка со стандартным потоком ввода другого
1) Что такое вызов pipe(), когда гуглю мне выдают вместе с pipe вот такую штуку |(вот эту палку), что из этого pipe? Расскажите понятым...

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


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru